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

时间:2010-03-28 19:36:19

标签: iphone html image email local

在我的应用中,我正在撰写一封3.0 + MFMailComposeViewController的HMTL电子邮件。 为此,我创建了一个包含一些占位符的HTML文件。 在我的代码中,我读取了HTML文件,并使用replaceOccurrencesOfString,我用应用程序中的数据替换了占位符。 通过这种方式,我撰写了我想发送的电子邮件的正文。 这一切都非常好用,除了事实,在我的HTML文件中,我有一个<img src='imageplaceholderpath' />标签。 不知何故,我无法弄明白,我应该替换这个imageplaceholderpath,以便引用驻留在我的应用程序中的图像。 这根本就是一种有效的方法,如果是这样,我应该把路径背后的语法/逻辑放在什么位置? 我非常感谢您的见解! 问候 Sjakelien

5 个答案:

答案 0 :(得分:4)

不幸的是,iPhone 3.x API不支持此功能。

http://developer.apple.com/iphone/library/documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

它需要Content-ID:成为附件子部分的一部分,但事实并非如此。

 - (void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename

答案 1 :(得分:3)

请注意,使用data: URI不适用于所有邮件客户端。那些使用IE作为渲染引擎的人除非安装了IE8,否则根本不支持它,即使这样,according to Wikipediadata: URI也限制为最大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发送电子邮件。

答案 2 :(得分:1)

答案 3 :(得分:0)

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

有关详情,请参阅this question,以及this forum post

上的示例代码

答案 4 :(得分:0)

我不知道 HTML 格式是否适合你,但实际上在电子邮件中嵌入图像可以通过实现使用HTML,只需图像作为附件。

看看这里实现的方式:

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

关键部分是:

// ATTACHING A SCREENSHOT
NSData *myData = UIImagePNGRepresentation(screenshot);
[controller addAttachmentData:myData mimeType:@"image/png" fileName:@"route"];

您获得UIImage的PNG代表(作为NSData),并通过电子邮件附上。