在iPhone HTML邮件中显示本地图片

3
在我的应用程序中,我正在使用3.0+的MFMailComposeViewController组合一个HTML电子邮件消息。 为此,我创建了一个带有一些占位符的HTML文件。 在我的代码中,我读取HTML文件,并使用replaceOccurrencesOfString将占位符替换为应用程序中的数据。 通过这种方式,我组合了我想要发送的电子邮件正文。 这一切都非常顺利,除了一个问题,就是在我的HTML文件中,我有一个<img src='imageplaceholderpath' />标签。 不知怎么的,我无法弄清楚应该用什么来替换这个imageplaceholderpath,以引用存储在我的应用程序中的图像。 这是否是一个有效的方法,如果是,我应该在那里放置路径的语法/逻辑是什么? 我很感激您的见解! 问候 Sjakelien
5个回答

4

3
请注意,使用data: URI在所有邮件客户端上都无法正常工作。那些使用IE作为渲染引擎的邮件客户端除非安装了IE8,否则根本不支持它,即使安装了IE8,data: URIs也被限制在32 KB以内,据维基百科所述
最简单的让其工作的方法是将图像放在您自己的服务器上,并使用完整的http:// URI引用它。如果由于某种原因您无法这样做(可能是图像作为使用您的应用程序的一部分生成),那么您可以尝试将图像作为MIME子部分附加并从HTML中引用它。
我的邮件客户端不会自动加载远程图像,但有些垃圾邮件在我打开时仍然有图像。它是这样工作的:
如yonel所建议,将图像附加到您的邮件中。不知何故,您还需要添加一个Content-ID:头到子部分中。然后将此标题的内容用作图像的src属性。我的垃圾邮件在HTML中看起来像这样:
<img src="cid:image001.jpg@01CACC43.7035CE50">

附件子部分看起来像:
Content-Type: image/jpeg;
    name="image001.jpg"
Content-Transfer-Encoding: base64
Content-ID: <image001.jpg@01CACC43.7035CE50>

addAttachmentData:mimeType:fileName:的文档,我猜你无法使其工作,需要考虑使用原始SMTP发送电子邮件。


1

0

我认为你不能像普通的电子邮件客户端那样将图像嵌入电子邮件中。但是,似乎可以直接在HTML中包含图像数据作为base64编码数据。这是一种非常非标准的做法,因此电子邮件可能无法在所有电子邮件客户端上完美显示。

请参见此问题以获取更多信息,并查看此论坛帖子上的示例代码。


0

我不知道对你来说是否必须使用 HTML 格式,但实际上在电子邮件中嵌入图像可以通过将图像作为附件来实现,无需使用 HTML。

只需查看此处的实现方式:

http://iphone-dev-tips.alterplay.com/2009/11/attaching-image-of-uiview-to-email.html

关键部分如下:

// 添加屏幕截图
NSData *myData = UIImagePNGRepresentation(screenshot);
[controller addAttachmentData:myData mimeType:@"image/png" fileName:@"route"];

您可以获取您的UIImage的PNG表示形式(作为NSData),并将其附加到电子邮件中。


我认为HTML是我需要的东西,因为我想要控制消息文本的格式。更重要的是,我希望图像以特定位置内联于文本中。 - Sjakelien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接