我使用以下代码发送一封包含NSData对象内容的电子邮件(变量名为:data):
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
[controller setSubject:@"Subject"];
[controller addAttachmentData:data mimeType:@"application/pdf" fileName:@"Attachment"];
[controller setMessageBody:@"Please find attached the connections for..." isHTML:NO];
controller.mailComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
它添加了一个生成为pdf格式的UIView作为附件,并发送电子邮件。这一切都很好,除了一个问题:
当收到电子邮件时,除了附带的pdf文件外,还有另一个附带的.txt文件,其内容是:"从我的iPad发送"。如果我没有附上pdf,"从我的iPad发送"消息会出现在电子邮件的正文中,而不是附件中。
有人知道如何解决这个问题吗?我不希望将文本文件附加在邮件中。
问候,
Petar
当你发送一封带有附件的电子邮件时,其中的所有都被包装成一个多部分/混合消息,所有内容都被编码为Base64,包括消息正文和签名!所以看起来是这样的。。。
Content-Type: multipart/mixed;
boundary="_003_81E0DB72B1F643FBAA40D9BCB66A11E4_"
--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
SGkgTW9tIQ==
(即"Hi Mom!"
编码为Base64)
--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_
Content-Type: application/octet-stream; name="MyAttachment.xlsx"
Content-Description: MyAttachment.xlsx
Content-Disposition: attachment; filename="MyAttachment.xlsx"; size=15262
Content-Transfer-Encoding: base64
UEsDBBQABgAIAAAAIQA3Mb2RgAEAAIQFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC
狙击
AF81AABkb2NQcm9wcy9hcHAueG1sUEsFBgAAAAANAA0AaAMAACA4AAAAAA==
--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_
Content-Type: text/html; name="ATT00001.htm"
Content-Description: ATT00001.htm
Content-Disposition: attachment; filename="ATT00001.htm"; size=91
Content-Transfer-Encoding: base64
PGh0bWw+PGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiI+PGRpdj48L2Rpdj48ZGl2Pjxicj48YnI+U2VudCBmcm9tIG15IGlQYWQ8L2Rpdj48L2JvZHk+PC9odG1sPg==
(那是<html><body bgcolor="#FFFFFF"><div></div><div><br><br>Sent from my iPad</div></body></html>
作为Base64)
--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_--
即使您进入"设置">>"邮件、通讯录、日历"并删除签名,您仍然会收到一个空的HTML文档。
正确的长期答案可能是将其作为bug提交给苹果,然后等待。同时,如果这真的是一个引人注目的错误,我建议你自己生成整个多部分/混合的电子邮件正文,不需要签名,看看这是否会欺骗MFMailComposeViewController,让它认为电子邮件没有附件。就我个人而言,我想我只是想告诉我的客户接受它。:)