我知道之前已经问过这个问题,但我最近没有看到任何东西,所以我希望得到修复。 目前,我发送的电子邮件中包含一个包含两个图像标记的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
}
答案 0 :(得分:0)
使用src为base64的img标签发送html主体是实现内嵌图像附件的正确方法。
早些时候面对类似的问题,坦率地说,我没有解决方案。但是,某些邮件客户端(如Outlook,Gmail)会考虑将base64图像作为恶意方法发送,因为无法扫描图像内容以识别图像是否包含不适当的内容。这有时会导致默认情况下将邮件移动到垃圾邮件。在某些电子邮件客户端中,它似乎不是问题。