代码之家  ›  专栏  ›  技术社区  ›  jj0b

iPhone MessageUI电子邮件附件未发送到收件人

  •  4
  • jj0b  · 技术社区  · 16 年前

    我正在尝试使用MessageUI框架将图像和pdf附加到电子邮件。我跟着火车走 MailComposer 苹果文档中的示例。

    然而,当我在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保存并检索到主捆绑包中,而是使用了NSDocumentsDirectory,一切正常。

    5 回复  |  直到 16 年前
        1
  •  1
  •   Lio    15 年前

    关于图像附件,我也有同样的问题。使用此功能,我能够发送并实际接收所附图像:

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

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

    只要我的两分钱,

        2
  •  0
  •   David Maymudes    16 年前

    我不知道这是否真的会导致您的问题,但大多数人似乎在filename参数中包含文件扩展名以添加AttachmentData,即。

    [picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage.png"];
    
        3
  •  0
  •   Ravi Chokshi    15 年前

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

    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
  •   DShah    14 年前

    我也有同样的问题,我确定 MFMailComposeViewController 包装是 MIME PDF 存档 7位传输 base-64 编码。显然,您不能使用7位编码发送二进制文件。因此,在一个 MFMailComposeViewController 我失踪了,或者这个物体有严重的缺陷。

        5
  •  0
  •   Dana K    13 年前

    我遇到了这个问题,因为我有同样的问题…有点老,但万一有人遇到这个问题,这里是帮助我。。。。

    我可以像往常一样添加我的附件(使用6个不同类型的附件)…它们会显示在电子邮件正文中…但是收件人永远不会得到所有附件…只有一个。

    我将文件拉入编辑器(拖放到m或h文件中),它显示了文件路径。结果是我忽略了将第一个文件复制到我的项目中,因此应用程序从我的本地驱动器中拉出,然后停止,因为我尝试附加的其他文件不在同一文件夹中。一旦我从同一个位置拉出所有附件,它们都很好地拉了进去。