iOS中发送短信/发送邮件的实现

时间:2024-04-09 16:12:12
需要引入框架:

MessageUI.framework

布局如下:


iOS中发送短信/发送邮件的实现

短信和邮件:

[objc] view plain copy
  1. #import "ViewController.h"  
  2. #import <MessageUI/MessageUI.h>  
  3.   
  4. @interface ViewController ()<MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate>//遵循协议  
  5.   
  6. @end  
  7.   
  8. @implementation ViewController  

短信功能:

[objc] view plain copy
  1. //短信功能  
  2. - (IBAction)messageButtonAction:(UIButton *)sender {  
  3. #pragma mark 程序外发送短信  
  4.       
  5.     /* 
  6.     //定义打开短信的url, 关键字: sms: 
  7.     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"sms://%@",@"10086"]]; 
  8.     //判断程序是否可以调用打开短信功能 
  9.     if ([[UIApplication sharedApplication] canOpenURL:url]) { 
  10.         [[UIApplication sharedApplication] openURL:url]; 
  11.     }else{ 
  12.         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持此短信功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; 
  13.         [alert show]; 
  14.     } 
  15.      */  
  16. /* 
  17.  用openURL来打开程序中的短信功能, 需要用到关键字: "sms:", 后面加上要发送的电话就可以了; 
  18.  缺点:1.这个方法会跳出我们正在运行的程序,打开系统的短信界面, 但当用户关闭短信后, 无法回到程序. 
  19.      2.这个方法我们只能定义要发送的手机号, 无法编辑发送的短信内容; 
  20.   
  21.  */  
  22.     }  

#pragma mark 程序内发送短信

    /*

     为了弥补上述的两个方法的不足,需要另一种使用短信功能的方法:程序内使用短信功能.

     */

    

    //1.添加短信所需要的框架: MessageUI.framework

    //2.引入头文件,实现如下代码

    //3.判断是否可以发短信

[objc] view plain copy
  1. - (IBAction)messageButtonAction:(UIButton *)sender {  
  2. #pragma mark 程序外发送短信  
  3.   BOOL canSendMessage = [MFMessageComposeViewController canSendText];  
  4.     if (canSendMessage) {  
  5.         //创建短信视图控制器  
  6.         MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc]init];  
  7.         //设置代理  
  8.         messageVC.messageComposeDelegate = self;  
  9.           
  10.         //设置短信内容  
  11.         messageVC.body = @"来一条信息";  
  12.           
  13.         //设置电话, 是一个数组, 可以设置多个电话, 实现群发功能  
  14.         messageVC.recipients = @[@"10086",@"10010"];  
  15.           
  16.         //打开短信功能, 通过这个方法会在程序内打开一个短信界面;  
  17.           
  18.         [self presentViewController:messageVC animated:YES completion:nil];  
  19.           
  20.     }else{  
  21.         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持此短信功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
  22.         [alert show];  
  23.     }  
  24.       
  25.       
  26. }  

信息的代理方法:

[objc] view plain copy
  1. - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{  
  2.       
  3.     //MessageComposeResult 的枚举值:  
  4. //    MessageComposeResultCancelled, //取消发送短信功能  
  5. //    MessageComposeResultSent,     //发送短信  
  6. //    MessageComposeResultFailed    //发送失败  
  7.     if (result == MessageComposeResultCancelled || result == MessageComposeResultSent) {  
  8.         [self dismissViewControllerAnimated:YES completion:nil];  
  9.     }  
  10.       
  11. }  

邮件功能:

[objc] view plain copy
  1. //邮件功能  
  2. - (IBAction)mailButtonAction:(UIButton *)sender {  
  3. #pragma mark 程序外发送邮件  
  4.       
  5.     /* 
  6.     //打开系统邮件页面, mailto: 
  7.     NSURL *mailURL = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@",@"[email protected]"]]; 
  8.     //cc:抄送对象  subject:主题  body:内容 
  9.     //NSURL *mailURL2 = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@?cc = %@&subject = %@&body = %@",@"[email protected]",@"[email protected]",@"邮件",@"你好啊!"]]; 
  10.      
  11.     if ([[UIApplication sharedApplication] canOpenURL:mailURL]) { 
  12.         [[UIApplication sharedApplication] openURL:mailURL]; 
  13.     }else{ 
  14.          
  15.         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; 
  16.         [alert show]; 
  17.          
  18.     } 
  19.      */  
  20.     /* 
  21.      此方法来发送邮件同上述短信一样,也会跳出程序,调用系统的邮件界面; 
  22.      */  
  23.       
  24. #pragma mark 程序内发送邮件  
  25.       
  26.     //判断是否可以发送邮件  
  27.     BOOL canSendMail = [MFMailComposeViewController canSendMail];  
  28.     if (canSendMail) {  
  29.         //创建邮件视图控制器  
  30.         MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc]init];  
  31.         //设置接收邮件人, 数组,可以实现群发  
  32.         [mailVC setToRecipients:@[@"[email protected]",@"[email protected]"]];  
  33.           
  34.         //设置抄送对象,  
  35.         [mailVC setCcRecipients:@[@"[email protected]",@"[email protected]"]];  
  36.           
  37.         //设置密送  
  38.         [mailVC setBccRecipients:@[@"[email protected]"]];  
  39.           
  40.         //设置内容  
  41.         [mailVC setMessageBody:@"很高兴认识你" isHTML:NO];  
  42.           
  43.         //设置代理  
  44.         mailVC.mailComposeDelegate = self;  
  45.         //打开邮件功能  
  46.         [self presentViewController:mailVC animated:YES completion:nil];  
  47.     }else{  
  48.         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
  49.         [alert show];  
  50.           
  51.     }  
  52.       
  53.       
  54. }  

邮件代理的方法:

[objc] view plain copy
  1. - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{  
  2.     //    MFMailComposeResultCancelled,  取消发送  
  3.     //    MFMailComposeResultSaved,      保存  
  4.     //    MFMailComposeResultSent,       发送  
  5.     //    MFMailComposeResultFailed      发送失败  
  6.       
  7.     switch (result) {  
  8.         case MFMailComposeResultCancelled:  
  9.             NSLog(@"取消发送");  
  10.             break;  
  11.         case MFMailComposeResultSaved:  
  12.             NSLog(@"保存");  
  13.             break;  
  14.         case MFMailComposeResultSent:  
  15.             NSLog(@"发送成功");  
  16.             break;  
  17.         case MFMailComposeResultFailed:  
  18.             NSLog(@"失败");  
  19.             break;  
  20.               
  21.         default:  
  22.             break;  
  23.     }  
  24.       
  25.     [self dismissViewControllerAnimated:YES completion:nil];  
  26.       
  27. }  

最终效果:(由于模拟器没法演示发送短信,所以会出现下面的现象)

iOS中发送短信/发送邮件的实现

每日更新关注:http://weibo.com/hanjunqiang  新浪微博


原文地址:http://blog.csdn.net/qq_31810357/article/details/49990635