我正在尝试使用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,一切正常。
答案 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文件中),它显示了文件路径。事实证明我忽略了将第一个文件复制到我的项目中,因此应用程序从我的本地驱动器中拉出然后停止,因为我试图附加的其他文件不在同一个文件夹中。一旦我从同一个位置拉出所有附件,他们就完全没了。
希望能有所帮助。