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

版权声明:本文为博主原创文章,未经博主允许不得转载。

需要引入框架:

MessageUI.framework

布局如下:

短信和邮件:

[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:%@",@"13683799303@163.com"]]; 
  8.     //cc:抄送对象  subject:主题  body:内容 
  9.     //NSURL *mailURL2 = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@?cc = %@&subject = %@&body = %@",@"13683799303@163.com",@"13683799303@26.com",@"邮件",@"你好啊!"]]; 
  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:@[@"13683799303@163.com",@"135895587@qq.com"]];  
  33.           
  34.         //设置抄送对象,  
  35.         [mailVC setCcRecipients:@[@"13683799303@163.com",@"135895587@qq.com"]];  
  36.           
  37.         //设置密送  
  38.         [mailVC setBccRecipients:@[@"13683799303@163.com"]];  
  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. }  

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

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

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

时间: 2024-10-03 14:11:34

iOS中发送短信/发送邮件的实现的相关文章

iOS中发送短信/发送邮件的实现 韩俊强的博客

需要引入框架: MessageUI.framework 布局如下: 短信和邮件: #import "ViewController.h" #import <MessageUI/MessageUI.h> @interface ViewController ()<MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate>//遵循协议 @end @implementation V

android-关于Android发送短信的扩展问题【具体见内容】,请大神指点

问题描述 关于Android发送短信的扩展问题[具体见内容],请大神指点 是这样的,程序中发送短信功能已经实现了. 因为我发的是类似验证码的信息,要对方同意并把这个验证码回馈给我才算双方达成"协议",但是现在短信内容可以在 短信 应用中看到,就是说我可以直接拿到对方的验证码. 请问有没有方法让这条短信不显示在系统的短信应用中,或者显示出来的是加密后的文字呢?或者发完之后直接删除也行啊-- 求帮助~先谢过大家了~ 解决方案 md5或许能帮上你,这是一种哈希讲明文转换为密文的算法吧

IOS中调用系统拨打电话与发送短信

IOS中调用系统拨打电话发送短信 一.调用打电话界面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel://%@",_phoneNumber]]]; 二.发送短消息界面 调用系统的发送短信的界面,需要引入以下头文件: #import <MessageUI/MessageUI.h> 系统短信界面的调用很简单,只需下面几句代码: ? 1

企业接电信的emas,请问如何向mas中写入数据发送短信

问题描述 企业接电信的emas,请问如何向mas中写入数据发送短信,设备为华为的emas,听人说只要将数据写入数据库就行,有高手指点下吗? 解决方案 解决方案二:insertintotbl_SMSendTask(CreatorID,ServiceID,OperationType,sm_Content,OrgAddr,DestAddr,SendType,TaskStatus,FeeType,FeeCode,MsgID)values('0000','MSC2110505','WAS','对不起,该投

Android开发中实现发送短信的小程序示例_Android

上图为代码结构图. 现在我们看下具体的代码. Send.java package cn.com.sms.send; import java.util.ArrayList; import java.util.Iterator; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.te

android-Androi软件开发中资深的发送短信问题

问题描述 Androi软件开发中资深的发送短信问题 我自己写了一个发送短信的APK,但是当我第一次用这个软件,点了发送按钮,有个杀毒软件会提示我是否发送,虽然之后点发送按钮不会提示,但是我想第一次就不提示直接发送则么办?换句话说就是跳过杀毒软件直接发送....求大神 解决方案 这个比较难了,你卸载杀毒软件吧,要么你的代码把杀毒软件干掉 解决方案二: 首杀毒软件一般有较高权限,所以你很难绕过它.不然它能轻易卸载,还怎么保护 解决方案三: LZ这个是实现不了的,因为你申请的权限属于使用时询问,就算没

Android开发中实现发送短信的小程序示例

上图为代码结构图. 现在我们看下具体的代码. Send.java package cn.com.sms.send; import java.util.ArrayList; import java.util.Iterator; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.te

android中可以通过两种方式调用接口发送短信_Android

第一:调用系统短信接口直接发送短信:主要代码如下: 复制代码 代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessage(content); for (String text : divideContents) { smsManager.sendTextMessage("150xxxxxxxx&qu

android中可以通过两种方式调用接口发送短信

第一:调用系统短信接口直接发送短信:主要代码如下: 复制代码 代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessage(content); for (String text : divideContents) { smsManager.sendTextMessage("150xxxxxxxx&qu