从应用内发送电子邮件中的图像和文字

时间:2011-04-19 12:32:48

标签: ios objective-c cocoa-touch ios4 iphone-sdk-3.0

如何在我的应用内的电子邮件中发送图片以及表格数据形式的文字?

请帮助并提出建议。感谢。

5 个答案:

答案 0 :(得分:8)

- (void)sendMailWithImage:(UIImage *)image
{
if([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
if(mailController!=nil) {
mailController.mailComposeDelegate = self;
NSData *imageData = UIImagePNGRepresentation(image);
[mailController addAttachmentData:imageData mimeType:@"image/png" fileName:@"MyImageName"];
[mailController setSubject:yourSubject];
[mailController setMessageBody:yourBody isHTML:NO];
[self presentModalViewController:mailController animated:YES];
[mailController release];
}
else
{
//Do something like show an alert
}
}

希望这有帮助

答案 1 :(得分:1)

查看MessageComposer示例应用。基本上你使用addAttachmentData:mimeType:fileName:

这是来自MessageComposer应用程序:

NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy"];

答案 2 :(得分:0)

您可以使用Apple的MFMailComposeViewController从iOS应用发送邮件。其官方文件为here。它的用法

  1. 将MessageUI.framework添加到您的项目
  2. 导入必要的头文件

       #import <MessageUI/MessageUI.h> 
       #import <MessageUI/MFMailComposeViewController.h>
    
  3. 要发送邮件,请打开MFMailComposerController

    if ([MFMailComposeViewController canSendMail]) { 
       MFMailComposeViewController *ctrller = [[MFMailComposeViewController alloc] init]; 
       ctrller.mailComposeDelegate = self; 
       [ctrller setSubject:@"Subject Goes Here."]; 
       [ctrller setMessageBody:@"Your message goes here." isHTML:NO]; 
       [self presentModalViewController:ctrller animated:YES]; 
       [ctrller release]; //if not using ARC
    } else { 
        NSLog(@Device is unable to send email in its current state.); 
    }
    
  4. 如果要附加数据,可以使用addAttachmentData:方法

    [ctrller addAttachmentData:YOUR_DATA_IN_NSDATA_FORMAT 
               mimeType:YOUR_MIME_TYPE 
               fileName:YOUR_ATTACHEMENT_FILENAME];
    

答案 3 :(得分:0)

您可以将图像作为附件发送,使用MFMailComposerController发送邮件。

-(void)displayComposerSheet 
{
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;
    [picker setSubject:@"Test Subject"];
    // Attach an image to the email
    NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",imageName] ofType:@"png"];
    NSData *myData = [NSData dataWithContentsOfFile:path];
    [picker setMessageBody:body isHTML:NO];
    if (picker != nil)  {
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
}

答案 4 :(得分:0)

您使用MFMailComposerController类允许用户撰写和发送邮件。您可以使用addAttachmentData:mimeType:fileName:方法附加图像和其他文件,使用setMessageBody:isHTML:方法附加消息正文(纯文本或HTML)。

请注意,目前无法使用multipart/related在HTML中包含图片,您必须使用data: URIs(不是所有客户端都支持)或外部服务器上的图片(也不是由于隐私原因,所有客户都支持。或者,当然,完全绕过Apple并通过与您自己的服务器的对话发送邮件。