使用html正文和图片标记从iOS应用发送电子邮件

时间:2016-08-12 12:12:49

标签: ios swift mfmailcomposer

我知道之前已经问过这个问题,但我最近没有看到任何东西,所以我希望得到修复。 目前,我发送的电子邮件中包含一个包含两个图像标记的html正文。最初我只是做了像

这样的事情

<img width="100" src="http://cdn1-www.dogtime.com/assets/uploads/gallery/30-impossibly-cute-puppies/impossibly-cute-puppy-2.jpg" >

但现在只是尝试使用本地图像并使用base64编码,所以像

<img width="100" src="data:image/png;base64,...>

到目前为止,我已经在iOSs邮件中取得了成功,但是一旦我在Gmail或Outlook中打开它,或者其他任何东西都没有用。

有没有人找到解决方案?

我的代码......

let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
mailComposer.setToRecipients([String]())
mailComposer.setSubject("email with image in body")
mailComposer.setMessageBody(getHtmlBody(), isHTML: true)
self.presentViewController(mailComposer, animated : true, completion: nil)

getHtmlBody(){
    let imgData:NSData = UIImagePNGRepresentation(UIImage(named : "logo")!)
    let dataString = imgData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

    var html = "<!DOCTYPE html>"
    html = html + "<html>"
    html = html + "<body>" 
    html = html + "<h1>Hello World, look at this image <img width=\"100\" src=\"data:image/png;base64,\(dataString)\"></h1>"
    html = html + "</body>"
    html = html + "</html>" 
    return html 
}

1 个答案:

答案 0 :(得分:0)

使用src为base64的img标签发送html主体是实现内嵌图像附件的正确方法。

早些时候面对类似的问题,坦率地说,我没有解决方案。但是,某些邮件客户端(如Outlook,Gmail)会考虑将base64图像作为恶意方法发送,因为无法扫描图像内容以识别图像是否包含不适当的内容。这有时会导致默认情况下将邮件移动到垃圾邮件。在某些电子邮件客户端中,它似乎不是问题。