Вложения электронной почты iPhone MessageUI не отправляются получателю - PullRequest
4 голосов
/ 17 февраля 2010

Я пытаюсь прикрепить изображение и pdf к электронному письму, используя платформу MessageUI. Я следовал примеру MailComposer в документации Apple.

На iPhone он работает идеально, изображение и файл PDF отображаются в теле окна отправки почты, как и ожидалось.

Однако, когда я получаю электронное письмо на моем MacBook, возникают две проблемы.

1) myImage.png отображается в виде вложения и имеет правильные размеры, но полностью пусто

2) myPDF.pdf вообще не отображается как вложение

Но, когда я получаю почту на моем iPhone, myImage.png обнаруживается нормально. myPDF.pdf по-прежнему не отображается в почте на моем iPhone.

Надеюсь, кто-то может пролить свет на то, что может происходить.

Вот соответствующий код:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;

[picker setSubject:@"Test Email"];

 // Attach an image to the email
 NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"myImage" ofType:@"png"];
 NSData *imageData = [NSData dataWithContentsOfFile:imagePath];
 [picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage"];


// Attach a PDF file to the email
NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"];
NSData *pdfData = [NSData dataWithContentsOfFile:pdfPath];
[picker addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF"];


// Fill out the email body text
NSString *emailBody = @"This is a test.";
[picker setMessageBody:emailBody isHTML:NO];

[self presentModalViewController:picker animated:YES];
[picker release];

РЕДАКТИРОВАТЬ Вместо того, чтобы сохранять и извлекать мое изображение и PDF в мой mainBundle, я использовал NSDocumentsDirectory и все работало нормально.

Ответы [ 5 ]

1 голос
/ 25 января 2011

У меня была такая же проблема с вложением изображения. Используя это, я смог отправить и получить прикрепленное изображение:

//attachment
UIImage *image = [UIImage imageNamed:@"image.png"];
NSData *imageData = UIImagePNGRepresentation(image);

[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"theImage"];

Я не пробовал отправлять PDF, извините.

Только мои два цента,

С уважением.

0 голосов
/ 22 января 2013

Я сталкивался с этим, поскольку у меня была та же проблема ... немного старая, но в случае, если кто-то сталкивался с этим, вот что помогло мне ...

Я смог добавить свои вложения как обычно (используя 6 различных типов вложений) ... они будут отображаться в теле письма ... но получатель никогда не получит все вложения .... только один.

Я вытащил файлы в свой редактор (перетащите их в m или h файлы), и он показал путь к файлу. Оказывается, я пренебрег копированием первого файла в свой проект, поэтому приложение извлекало данные с моего локального диска, а затем останавливалось, поскольку другие файлы, которые я пытался прикрепить, не были в той же папке. Как только я вытащил все навесное оборудование из одного места, они все потянулись нормально.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 18 августа 2011

Попробуй это, у меня это сработало.

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;

[picker setSubject:@"Test Email"];

 // Attach an image to the email
 NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"myImage" ofType:@"png"];
 NSData *imageData = [NSData dataWithContentsOfFile:imagePath];
 [picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage"];


// Attach a PDF file to the email
//NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"];
//NSData *pdfData = [NSData dataWithContentsOfFile:pdfPath];

[picker addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF.pdf"];


// Fill out the email body text
NSString *emailBody = @"This is a test.";
[picker setMessageBody:emailBody isHTML:NO];

   // [self presentModalViewController:picker animated:YES];

    [picker release];
0 голосов
/ 04 ноября 2010

У меня была та же проблема, и я определил, что MFMailComposeViewController упаковывает MIME для файла PDF с кодировкой 7-битной передачи , а не для печати в кавычках или base-64 кодировка. Очевидно, что вы не можете отправлять двоичные файлы по электронной почте, используя 7-битную кодировку. Так что либо на MFMailComposeViewController отсутствует настройка кодировки передачи, которую я пропускаю, либо этот объект имеет серьезный недостаток.

0 голосов
/ 17 февраля 2010

Я не знаю, действительно ли это вызовет вашу проблему, но большинство людей, кажется, включают расширения имени файла в параметре fileName для добавления атрибута attachmentData, т.е.

[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage.png"];
...