IOS开发中的分享到邮件

  本篇和UIWebView的全屏截图,可以一起使用,先对UIWebView进行截图,然后分享到邮箱(当时做还有分享到微信、腾讯微博、新浪微博功能,这三个根据官方资料,比较容易实现,这里就不进行解说了)。

  下面先列出实现邮件发送功能的源码:

 1 - (void)displayMailComposerSheet
 2 {
 3     MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
 4     
 5     // 设置picker的委托方法,完成之后会自动调用成功或失败的方法
 6     picker.mailComposeDelegate = self;
 7     // 添加主题
 8     [picker setSubject:@"文件分享"];
 9     // 添加收件人
10     NSArray *toRecipients = [NSArray arrayWithObject:@"279352257@qq.com"];
11     // 说明:也可以添加多个收件人,代码如下所示:
12 //    NSArray *toRecipients = [NSArray arrayWithObjects:@"one@qq.com",@"two@qq.com",nil];
13     // 添加抄送
14 //    NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@qq.com",@"third@qq.com", nil];
15     // 添加密送
16 //    NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@qq.com"];
17     
18     [picker setToRecipients:toRecipients];
19 //    [picker setCcRecipients:ccRecipients];
20 //    [picker setBccRecipients:bccRecipients];
21     
22     // 直接在HTML代码中写入图片的地址
23     NSString *emailBody = [NSString stringWithFormat:@"<img src='http://p2.so.qhimg.com/t0130e3288d86929b97.jpg' /><p>我分享了图片</p>"];
24     
25     [picker setMessageBody:emailBody isHTML:YES];
26     [self presentModalViewController:picker animated:YES];
27     [picker release];
28 }

  这样实现的效果是,在邮件中会显示一个图片和一段文本,关键是第25行代码,一定要设置isHTML为YES。但实际应用中,图片一般我们没有上传到服务器上,而是在客户端,这时候我们可以用下面的方式来发送图片(将第23行代码替换成下面的代码):

1     // 发送图片附件(其他格式的附件,可以都先转化称NSData类型,然后设置相应的mimeType即可,如txt类型为@"text/txt",doc类型为@"text/doc",pdf类型为@"file/pdf"等等)
2     NSData *myData = [NSData dataWithContentsOfFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"new.png"]];
3     [picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"new.png"];
4     NSString *emailBody = [NSString stringWithFormat:@"<p>我分享了图片</p>"];

  使用上面这种方式,将isHTML设置为YES的话,图片会显示在正文中;isHTML设置为NO的话,图片会显示在附件中。

  邮件发送完成之后,可以在如下的委托方法中进行相应的处理,委托方法如下所示:

 1 - (void)mailComposeController:(MFMailComposeViewController*)controller
 2           didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
 3 {
 4     switch (result)
 5     {
 6         case MFMailComposeResultCancelled:
 7             NSLog(@"Result: Mail sending canceled");  // 邮件发送取消  
 8             break;
 9         case MFMailComposeResultSaved:
10             NSLog(@"Result: Mail saved");  // 邮件保存成功
11             break;
12         case MFMailComposeResultSent:
13             NSLog(@"Result: Mail sent");  // 邮件发送成功
14             break;
15         case MFMailComposeResultFailed:
16             NSLog(@"Result: Mail sending failed");  // 邮件发送失败
17             break;
18         default:
19             NSLog(@"Result: Mail not sent");
20             break;
21     }
22     [self dismissModalViewControllerAnimated:YES];
23 }

  调用邮件发送功能的代码如下:

 1     Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
 2     
 3     if (mailClass !=nil)
 4     {
 5         if ([mailClass canSendMail])
 6         {
 7             [self displayMailComposerSheet];
 8         }
 9         else
10         {
11             UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@""message:@"不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
12             [alert show];
13             [alert release];
14         }
15     }
16     else
17     {
18         
19     }

  【说明】:使用邮件发送功能,需要引入MessageUI.framework 框架,并且添加如下头文件:

  #import <MessageUI/MessageUI.h>

  #import <MessageUI/MFMailComposeViewController.h>

  实现接口MFMailComposeViewControllerDelegate。

转载于:https://www.cnblogs.com/goflee/p/3484558.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值