iOS:发送带附件的电子邮件会自动添加另一个附加(.txt)文件

Pet*_*tar 5 pdf email attachment uiview ios

我使用以下代码发送包含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];
Run Code Online (Sandbox Code Playgroud)

它添加了一个生成为pdf的UIView作为附件并发送电子邮件.除了一个问题外,这一切都很好:

当收到电子邮件时,连同附加的pdf,还有另一个附加的.txt文件,其内容为:"从我的iPad发送".如果我没有附上pdf,则"从我的iPad发送"消息会显示在电子邮件正文中,而是显示在附件中.

有没有人知道如何解决这个问题?我不希望文本文件附加在邮件中.

问候,

斯托

Dal*_*gia 4

似乎当您发送带有附件的电子邮件时,其中的所有内容都被包装为多部分/混合消息,并且所有内容都编码为 Base64,包括消息正文和签名!所以它看起来像这样......

Content-Type: multipart/mixed;
    boundary="_003_81E0DB72B1F643FBAA40D9BCB66A11E4_"

--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SGkgTW9tIQ==
Run Code Online (Sandbox Code Playgroud)

(编码"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
Run Code Online (Sandbox Code Playgroud)

剪断

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==
Run Code Online (Sandbox Code Playgroud)

(即 <html><body bgcolor="#FFFFFF"><div></div><div><br><br>Sent from my iPad</div></body></html> Base64)

--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_--
Run Code Online (Sandbox Code Playgroud)

即使您进入“设置”>>“邮件、通讯录、日历”并删除签名,您仍然会收到一个空的 HTML 文档。

正确的长期答案可能是将其作为错误提交给苹果并等待。同时,如果这确实是一个严重的错误,我建议您自己生成整个多部分/混合电子邮件正文,而不带签名,并看看这是否会欺骗 MFMailComposeViewController 认为该电子邮件没有附件。就我个人而言,我想我只会告诉我的客户接受它。:)