2010-02-16 152 views
4

我想使用MessageUI框架将图像和PDF附加到电子邮件。我遵循Apple文档中的MailComposer示例。iPhone MessageUI电子邮件附件没有被发送到接收器

在iPhone上,它看起来很完美,图像和PDF都在预期发送邮件窗口的主体中显示。

但是,当我在我的MacBook上收到电子邮件时,存在两个问题。

1)myImage.png显示为一个附件,是正确的尺寸,而是可以完全空白

2)myPDF.pdf不显示为在所有

附件但是,当我收到我的iPhone上的邮件,myImage.png显示正常。 myPDF.pdf仍然不会在我的iPhone上显示在邮件中。

希望有人可以对可能发生的事情有所了解。

下面是相关代码:相反,保存和检索我的形象和PDF我mainBundle我用NSDocumentsDirectory和一切工作的罚款

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

编辑

回答

0

我不知道它是否确实会导致你的问题,但大多数人似乎包括对文件名参数addAttachmentData文件扩展名,即

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

实际上这并不是必需的,因为文件类型已经在pathForResource中指定:ofType:但是,无论如何,我确实尝试过,并没有区别。 – jj0b 2010-02-18 16:16:58

+0

pathForResourceOfType是关于*加载*的数据,而fileName参数可能已经影响了电子邮件客户端如何解释*数据....您可以发布电子邮件转储,因为您在Mac上收到它? – 2010-02-19 04:11:32

0

我有同样的问题,我确定所述MFMailComposeViewController被包装MIMEPDF文件与7位传输编码,而不是引号的可打印或基-64编码。显然你不能使用7位编码向二进制文件发送电子邮件。因此,无论是我丢失的MFMailComposeViewController还是传输编码设置,或者此对象都有严重的缺陷。

1

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

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

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

我没有尝试pdf发送,对不起。

只是我的两分钱,

问候。

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

我碰到这个际,我也有同样的问题...有点老了,但万一有人遇到这种这里就是帮助我....

我可以加我的附件像往常一样(使用各种类型的6个附件)...他们会出现在电子邮件正文中...但接收器永远不会得到所有的附件....只有一个。

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

希望能帮助别人。