zoukankan      html  css  js  c++  java
  • iOS-调用系统的短信和发送邮件功能,实现短信分享和邮件分享

    一、邮件分享

    1、iOS系统自带邮件设置邮箱(此处以QQ邮箱为例)(http://jingyan.baidu.com/album/6181c3e084cb7d152ef153b5.html?picindex=1)

      注意:由于QQ邮箱激活时间不满14天,暂时无法设置POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

         会造成只能发送邮件,但是邮件接收不到的情况。

    2、实现功能

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

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

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

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

    》添加邮箱附件方法:

    //发送图片附件
    //NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
    //NSData *myData = [NSData dataWithContentsOfFile:path];
    //[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy.jpg"];
    //发送txt文本附件
    //NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"txt"];
    //NSData *myData = [NSData dataWithContentsOfFile:path];
    //[picker addAttachmentData:myData mimeType:@"text/txt" fileName:@"MyText.txt"];
    //发送doc文本附件 
    //NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"doc"];
    //NSData *myData = [NSData dataWithContentsOfFile:path];
    //[picker addAttachmentData:myData mimeType:@"text/doc" fileName:@"MyText.doc"];
    //发送pdf文档附件
    /*
    NSString *path = [[NSBundlemainBundle]pathForResource:@"CodeSigningGuide"ofType:@"pdf"];
    NSData *myData = [NSDatadataWithContentsOfFile:path];
    [pickeraddAttachmentData:myDatamimeType:@"file/pdf"fileName:@"rainy.pdf"];
    */

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

    - (void)mailComposeController:(MFMailComposeViewController*)controller
              didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
    {
        switch (result)
        {
            case MFMailComposeResultCancelled:
                NSLog(@"Result: Mail sending canceled");  // 邮件发送取消  
                break;
            case MFMailComposeResultSaved:
                NSLog(@"Result: Mail saved");  // 邮件保存成功
                break;
            case MFMailComposeResultSent:
                NSLog(@"Result: Mail sent");  // 邮件发送成功
                break;
            case MFMailComposeResultFailed:
                NSLog(@"Result: Mail sending failed");  // 邮件发送失败
                break;
            default:
                NSLog(@"Result: Mail not sent");
                break;
        }
        [self dismissModalViewControllerAnimated:YES];
    }

    导入MessageUI.framework

    .h文件中#import<MessageUI/MessageUI.h>

    #import<MessageUI/MFMailComposeViewController.h>

    实现 MFMailComposeViewControllerDelegate, MFMessageComposeViewControllerDelegate

    二、发送短信

    //短信
    -(void)showSMSPicker{
       Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
    
        if (messageClass != nil) { 
       // Check whether the current device is configured for sending SMS messages
            if ([messageClass canSendText]) {
            [selfdisplaySMSComposerSheet];
            }
            else { 
                UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@""message:@"设备不支持短信功能" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil];
                [alert show];
                [alert release];
                
            }
        }
        else {
            }
     }
    
    -(void)displaySMSComposerSheet
    {
       MFMessageComposeViewController *picker = [[MFMessageComposeViewControlleralloc]init];
    picker.messageComposeDelegate =self;
    NSString *smsBody =[NSStringstringWithFormat:@"我分享了文件给您,地址是%@",address] ;
        picker.body=smsBody;
    [selfpresentModalViewController:pickeranimated:YES];
    [pickerrelease];
    }
  • 相关阅读:
    js中Unicode转义序列
    css相对定位和绝对定位
    C#默认以管理员身份运行程序
    asp.net判断是否代理
    JS上传图片选择后立即预览
    asp.net判断是刷新还是提交
    查询QQ好友的IP地址(二)
    查询QQ好友的IP地址(一)
    Hadoop综合大作业+补交平时作业
    熟悉常用的Hbase操作
  • 原文地址:https://www.cnblogs.com/HMJ-29/p/6102475.html
Copyright © 2011-2022 走看看