iPhone MessageUI电子邮件附件未发送给接收方

时间:2010-02-16 21:51:36

标签: iphone email pdf png attachment

我正在尝试使用MessageUI框架将图像和pdf附加到电子邮件中。我按照Apple文档中的MailComposer示例进行操作。

在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 个答案:

答案 0 :(得分:1)

我对图像附件有同样的问题。使用这个,我能够发送并实际收到附加的图像:

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

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

我没有尝试pdf发送,抱歉。

只是我的两分钱,

问候。

答案 1 :(得分:0)

我不知道它是否真的会引起你的问题,但是大多数人似乎都在fileName参数中添加了文件扩展名addAttachmentData,即

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

答案 2 :(得分:0)

我遇到了同样的问题,我确定MFMailComposeViewController正在为MIME文件打包PDF 7位传输编码比quot quot-printable或 base-64 编码。显然,您无法使用7位编码通过电子邮件发送二进制文件。因此,MFMailComposeViewController上的传输编码设置要么我缺少,要么此对象存在严重缺陷。

答案 3 :(得分:0)

试试这个,这个对我有用。

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];

答案 4 :(得分:0)

我遇到了这个问题,因为我遇到了同样的问题......有点老了但是如果有人遇到这个问题,这对我有帮助....

我能够像往常一样添加我的附件(使用6种不同类型的附件)......它们会显示在电子邮件正文中......但接收者永远不会获得所有附件....之一。

我将文件拖到我的编辑器中(拖放到你的m或h文件中),它显示了文件路径。事实证明我忽略了将第一个文件复制到我的项目中,因此应用程序从我的本地驱动器中拉出然后停止,因为我试图附加的其他文件不在同一个文件夹中。一旦我从同一个位置拉出所有附件,他们就完全没了。

希望能有所帮助。