在iOS中编写新电子邮件时获取附加图像的Content-ID

时间:2011-05-19 03:09:21

标签: iphone ios ipad email attachment

我正在使用iOS中的MFMailComposeViewController来创建新的动态电子邮件,但在尝试使用内联图片时遇到了问题。

我首先尝试将图像添加为base64编码的字符串,即

<img src="data:image/png;base64, blahblahblah" /> 

但我只能在iPad上查看,而Outlook / Entourage会忽略它,即使我可以在源代码中看到它!

所以现在我正在尝试添加图像作为附件并通过它的内容ID链接到,即

<img src="cid:BF6E8B41-4D74-419E-B55E-8F18A07381AE" id="BF6E8B41-4D74-419E-B55E-8F18A07381AE" width="509" height="220">

但不知道如何通过代码获取cid
当我使用AddAttachmentData附加图片时,图片会显示在底部并实际生成带有cid的<img />标记!

此外,此ID似乎随每个新电子邮件而变化。上面的那个是我的第一次尝试,然后我发送了另一个,Content-ID更改为

<img src="cid:59EBFDED-2A31-4787-BF67-9D9ED0FF2B39" id="59EBFDED-2A31-4787-BF67-9D9ED0FF2B39" width="509" height="220">

我必须这样做的原因是因为这是一个动态生成的图像,它需要位于电子邮件模板中。

修改
我开始认为这是不可能的。我一直在研究几个小时,看起来iOS不会让你附加图像并通过它的CID链接到它。谢谢Apple -_-

1 个答案:

答案 0 :(得分:2)

我遇到MFMailComposeViewController的同样限制。它无法获取电子邮件附件的内容ID(cid),因此无法通过img src='cid:...'撰写引用附件的html电子邮件。由于大多数电子邮件客户端忽略数据URL(内联base 64编码图像),因此使用iOS应用程序中的图像编写html电子邮件消息的最佳选择是在Web上托管图像并将其作为img src='http://...'引用。大多数电子邮件客户端都会要求用户下载图像的权限,因此这并不理想,但它显然是iOS中使用公共API的唯一选择。