Я пытаюсь составить электронное письмо для программы 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, не отказываясь от границ и фона.
Спасибо!