如何在iPhone的MFMailComposeViewController中嵌入HTML图片

17

我正在尝试将一堆小图像嵌入到一个html表格中,然后使用MFMailComposeViewController发送。经过一些搜索,我发现几乎每个人都建议使用"Matt Gallagher的NSData+Base64"类来对照片进行Base64编码,并将其嵌入到html中。虽然它在iPhone上和一些电子邮件服务器上看起来可以工作,但Gmail和Yahoo不会显示以这种方式嵌入的图像。这个问题在这里也提到了。

我想知道是否有更好的解决方案。我不想上传照片到网络并将链接放在html代码中。我希望图片附加到电子邮件中,并在html文本、表格中作为内联图像显示...


我回答了一个问题,可能会有所帮助。https://dev59.com/hWox5IYBdhLWcg3w_ZV0#10481035 - fsaint
3个回答

17

很遗憾,目前无法按您的要求实现。HTML电子邮件中的内联图像使用单独的MIME部分,在消息正文中通过内容ID引用。MFMailComposeViewController不能控制消息的MIME结构,也不能让您添加内联引用的内容部分。

将图片数据嵌入到<img>标签中作为base64在某些组合上可以工作--它部分取决于电子邮件客户端,部分取决于最终用于呈现的浏览器,但正如您所注意到的,它并不广泛可移植。


3
似乎即使邮件应用程序(似乎使用MFMailComposeViewController)也无法将照片嵌入文本中并将它们作为附件发送。所以,你很可能是对的,这是不可能的。真遗憾!不管怎样还是谢谢你。 - Ali

6

我不确定如何在HTML中添加图片,但是以下是我如何将图片作为附件添加的方法:

UIImage *image = [UIImage imageNamed:@"myImage.png"];
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
composer.mailComposeDelegate = self;

NSData *data = UIImagePNGRepresentation(image);
[composer addAttachmentData:data mimeType:@"image/png" fileName:@"curse"];
[composer setMessageBody:@"" isHTML:NO];
[self presentModalViewController:composer animated:YES];
[composer release];

现在你需要做的就是将正文改为HTML格式,并找到一种方式从HTML中引用附加的图像。

3
尽管这是如何添加图像附件的方法,但实际上问题是要问如何在HTML中引用附加的图像(而这实际上是不可能的)。 - Ben Zotto
@quixoto:问题陈述为:“我希望将图像附加到电子邮件中”,我回答了这部分。我甚至说:“现在你只需要将正文更改为HTML,并引用来自HTML的附加图像。” 部分解决方案总比没有解决方案好。 - jbenet
2
明白了。就我所知,对于那些有明确答案的问题而言,部分解决方案在这里并没有太大的意义。Stack Overflow是一个庞大的社区,几乎总能找到知道答案的人。留下不完整的答案通常只会增加噪音。(你可以在问题下留言以便澄清或添加一些信息,而不必给出完整的答案等等。) - Ben Zotto
4
现在你需要做的就是将正文改为HTML格式,并找到一种方式从HTML中引用附加的图像。如何实现呢?这就是问题所在。 - mahboudz

3
将图片上传到某个托管网站,复制链接并将其放入。
<img src='the link.png' /> html on your email message body.

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