• 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。

  • 相关阅读:
    opencv之霍夫曼变换
    【Linux】【Jenkins】系统配置报反向代理设置有误问题的解决方案
    【Linux】【Selenium】安装Chrome和ChromeDriver的配置
    【Linux】【Jenkins】编译过程中遇到ERROR: Failed to parse POMs的解决方案
    【Linux】【Jenkins】代码编译和执行过程中的问题汇总
    【Linux】【Jenkins】邮件发送失败的问题javax.mail.MessagingException: Could not connect to SMTP host:
    【Linux】【Jenkins】配置过程中,立即构建时,maven找不到的问题解决方案
    【Linux】【GIt】Linux下安装和配置Git(转)
    【Linux命令】Linux下的tar压缩解压缩命令详解(转)
    【Linux】【Maven】Linux下安装和配置Maven
  • 原文地址:https://www.cnblogs.com/eagle927183/p/3476480.html
Copyright © 2020-2023  润新知