Отправка электронных писем, которые содержат HTML с использованием NSSharingService в Swift MacOS - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь составить электронное письмо для программы MacOS, которую создаю с помощью Swift, и встраиваю HTML в электронное письмо. После поиска по inte rnet я обнаружил, что вы можете отправлять приписанные строки через NSSharingService, который может содержать большую часть той же информации, что и HTML, и вы можете преобразовать HTML в NSAttributedString.

class SendEmail: NSObject {
    static func send(txt: String) {
        let service = NSSharingService(named: NSSharingService.Name.composeEmail)!

        service.subject = "Subject Line"
        let htmlData = txt.data(using: .unicode)!
        let attribStr = NSAttributedString(html: htmlData, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf16.rawValue], documentAttributes: nil)
        service.perform(withItems: [attribStr])

    }
}

Хотя исходное письмо HTML, которое я хотел написать, довольно сложное, я создал упрощенный пример, который все еще демонстрирует проблему.

        let html = """
        <html>
        <head>
            <style type="text/css">

                #outerBorder {
                    width: 650px;
                    border: 1px solid black;
                    font-style: italic;
                    margin: auto;
                    padding: 10px;
                }

                #mainHeader {
                    width: 650px;
                    background-image: linear-gradient(to bottom, rgb(15, 102, 250), rgb(0, 77, 209));
                    border: 1px solid black;
                    color: black;
                    box-shadow: 2px 2px 3px black;
                }
            </style>
        </head>
        <body>
        <div id="outerBorder">
        <div id="mainHeader">
            <h1 align="center">Post-Game Report</h1>
            <h6 align="center">Generated by Swift</h6>
            <p align="center" ; margin-bottom: 20px>HomeTeam vs AwayTeam</p>
        </div>
        </div>
        </body>
        """

        SendEmail.send(txt: html)

Когда я запускаю этот код, он создает письмо, но он не отображает границы и цвета фона, которые должны быть в HTML.

В то время как фактический HTML выглядит следующим образом:

https://i.stack.imgur.com/wYPXv.png

Составленное письмо выглядит так:

https://i.stack.imgur.com/Bukw5.png

Мне было интересно, есть ли способ полностью вставить HTML в композициях электронной почты, используя swift в программе MacOS, не отказываясь от границ и фона.

Спасибо!

...