将图像添加到MessageViewController在IOS5中工作正常但在IOS 6中没有

时间:2012-10-24 05:58:35

标签: iphone ios ipad ios5 ios6

我有一个奇怪的问题,下面的代码在IOS5设备上工作正常,所有模拟器,但在IOS6设备中失败。我得到一个空白视图代替图像。

要求:需要在邮件中添加图片。

NSString *imageName = @"classroom_tile.png"; 
imagePath = [[NSBundle mainBundle]bundlePath];
imagePath = [imagePath stringByAppendingPathComponent:[NSString   stringWithFormat:@"%@",imageName]];
imagePath = [@"file:///" stringByAppendingString:imagePath];

NSString *formatedUrl = [NSString stringWithFormat:@"</br><table border =\"0\"><tr><td></td><th>%@</th></tr><tr><td><img src= \'%@\' width=200 height=150></td></tr></table>",sometext,imagePath];
[mailComposer setMessageBody:formatedUrl isHTML:YES];

请建议。

谢谢和问候, 阿尼尔

2 个答案:

答案 0 :(得分:0)

您尝试做的事从未得到过支持。将图像添加到电子邮件中的唯一有效方法是将图像添加为附件。但即使这样,您也无法在邮件消息正文中引用图像附件。

在模拟器中有效的功能与此类功能无关,因为您无法在模拟器中实际发送电子邮件。让我问一下 - 在iOS 5设备上运行时,从应用程序发送的收到的电子邮件是否实际显示图像,还是仅在应用程序的邮件编辑器中正确显示?如果从应用程序发送并在用户计算机上的某个电子邮件客户端中打开的此类电子邮件显示该图像,我会感到非常惊讶。

编辑:事实证明这确实在iOS 5下工作但在iOS 6下没有。我很惊讶。我做了自己的快速测试。在iOS 5.1下,向iOS设备上发送带有此类图像引用的电子邮件实际上会与电子邮件一起发送,并且会显示在其计算机上的客户端电子邮件程序中。当应用程序在iOS 6下运行时,图像不会出现在应用程序中的邮件编辑器或收到的电子邮件中。所以至少这是一致的。

另一个小方注。这一行:

imagePath = [imagePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",imageName]];

应该是:

imagePath = [imagePath stringByAppendingPathComponent:imageName];

除非您实际使用的是字符串格式,否则请勿使用stringWithFormat:。此外,无需创建额外的NSString对象。

此外,这是获取资源包中文件路径的更好方法:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"classroom_tile" ofType:@"png"];

这一行会替换你发布的前三行。

最后一点。使用HTML电子邮件时,请添加<html><body>标记。

答案 1 :(得分:0)

This is not possible with the current MessageUI API: the MSMessageComposeViewController doesn't accept attachments like the MFMailComposeViewController does.

The only way to do this currently is to use an external service that allows you to send mms via a REST call for example.

GSMA defines a REST specification for exactly this purpose:     http://www.gsmworld.com/oneapi/reference_documentation-version_1.html (multiple pdf's on this page)

Try to find a local service provider that implements this specification and you're good to go.

Just to add the direct wiki link to the OneAPI MMS spec:     http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx and a link to the PHP/Java sandbox https://github.com/OneAPI/GSMA-OneAPI where MMS can be tested locally . Cheers.