iOS: при отправке электронной почты с вложением автоматически добавляется еще один прикрепленный (.txt) файл - PullRequest
5 голосов
/ 27 января 2012

Я использую следующий код для отправки электронного письма с содержимым объекта 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];

Он добавляет UIView, сгенерированный в формате PDF, как вложение и отправляетэлектронная почта.Это все хорошо, кроме одной проблемы:

Когда письмо получено, вместе с приложенным pdf, есть еще один вложенный файл .txt, содержимое которого: «Отправлено с моего iPad».Если я не прикрепляю PDF, в теле письма появляется сообщение «Отправлено с iPad», а не в прикрепленном файле.

Кто-нибудь знает, как это можно решить?Я не хочу, чтобы текстовый файл был прикреплен к сообщению.

С уважением,

Петар

1 Ответ

4 голосов
/ 18 февраля 2012

Кажется, что когда вы отправляете электронное письмо с вложением, все в нем оборачивается как составное / смешанное сообщение, и все кодируется как 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-документ.

Вероятно, правильным долгосрочным ответом будет отправить это в Apple как ошибку и подождать. В то же время, если это действительно ошибка showtopper, я бы посоветовал вам сгенерировать все тело составной / смешанной электронной почты самостоятельно, без подписи, и посмотреть, не обманывает ли это MFMailComposeViewController, думая, что электронная почта не имеет вложения. Лично я думаю, что я просто скажу своему клиенту жить с этим. :)

...