发送邮件
1.导入库文件:MessageUI.framework
2.引入头文件
3.实现代理<MFMailComposeViewControllerDelegate> 和 <UINavigationControllerDelegate>
代码示例:

- (void)didClickSendEmailButtonAction{  

    if ([MFMailComposeViewController canSendMail] == YES) {  

        MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
// 设置代理(与以往代理不同,不是"delegate",千万不能忘记呀,代理有3步)
mailVC.mailComposeDelegate = self;
// 收件人
NSArray *sendToPerson = @[@"humingtao2014@gmail.com"];
[mailVC setToRecipients:sendToPerson];
// 抄送
NSArray *copyToPerson = @[@"humingtao2013@126.com"];
[mailVC setCcRecipients:copyToPerson];
// 密送
NSArray *secretToPerson = @[@"563821250@qq.com"];
[mailVC setBccRecipients:secretToPerson];
// 主题
[mailVC setSubject:@"hello world"];
[self presentViewController:mailVC animated:YES completion:nil];
[mailVC setMessageBody:@"魑魅魍魉,哈哈呵呵嘿嘿霍霍" isHTML:NO];
}else{ NSLog(@"此设备不支持邮件发送"); } } - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"取消发送");
break;
case MFMailComposeResultFailed:
NSLog(@"发送失败");
break;
case MFMailComposeResultSaved:
NSLog(@"保存草稿文件");
break;
case MFMailComposeResultSent:
NSLog(@"发送成功");
break;
default:
break;
} [self dismissViewControllerAnimated:YES completion:nil];
} // 系统发送,模拟器不支持,要用真机测试
- (void)didClickSendSystemEmailButtonAction{ NSURL *url = [NSURL URLWithString:@"humingtao2014@gmail.com"];
if ([[UIApplication sharedApplication] canOpenURL:url] == YES) { [[UIApplication sharedApplication] openURL:url]; }else{ NSLog(@"此设备不支持");
} }

发送短信
前面三步引入配置和邮件发送一样

//  调用系统API发送短信
- (void)didClickSendMessageButtonAction{ if ([MFMessageComposeViewController canSendText] == YES) { MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc] init];
// 设置代理<MFMessageComposeViewControllerDelegate>
messageVC.messageComposeDelegate = self;
// 发送To Who
messageVC.recipients = @[@""];
messageVC.body = @"hello world";
[self presentViewController:messageVC animated:YES completion:nil]; }else{ NSLog(@"此设备不支持");
}
} - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{ switch (result) {
case MessageComposeResultCancelled:
NSLog(@"取消发送");
break;
case MessageComposeResultFailed:
NSLog(@"发送失败");
break;
case MessageComposeResultSent:
NSLog(@"发送成功");
break;
default:
break;
} [self dismissViewControllerAnimated:YES completion:nil]; } // 调用系统应用程序发送消息
- (void)didClickSendMessage2ButtonAction{ NSURL *url = [NSURL URLWithString:@"sms:18656348970"];
if ([[UIApplication sharedApplication] canOpenURL:url] == YES) { [[UIApplication sharedApplication] openURL:url]; }else{ NSLog(@"失败");
} }

iOS:实现邮件和短信发送的简单示例的更多相关文章

  1. zabbix告警邮件、短信发送错误快速排查方法

    zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...

  2. 使用gearman进行异步的邮件或短信发送

    一.准备工作 1.为了防止,处理业务途中出现的宕机,请配置好gearman的持久化方式.2.使用gearmanManager来管理我们的worker脚本,方便测试. 上述两条请看我之前写的两篇文章 二 ...

  3. iOS打电话、发短信、发邮件功能开发

    本文转载至 http://www.lvtao.net/ios/506.html 今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主 ...

  4. C# 短信发送 邮件发送

    兴趣是最好的老师. --爱因斯坦 一.实现短信发送 1.使用短信mao的方式进行短信发送,前提要购买硬件设备,这里就不考虑展示了: 2.使用中国网建提供的短信平台,但是用几次后要收费: 我们这里主要介 ...

  5. iOS基本的发短信和打电话调用

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...

  6. 基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信、二维码埋点技术)

    数据质量决定运营分析的质量 在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析:只有高质量的数据,才能驱动高质量的运营分析. ...

  7. IOS程序内发短信 MFMessageComposeViewController

    文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewCon ...

  8. 4、ABPZero系列教程之拼多多卖家工具 集成短信发送模块

    ABPZero并没有手机短信发送功能,现在我们来集成一个,为后面注册.登录作铺垫. 阿里云短信服务 首先需要在阿里云开通短信服务,连接地址 开通后,在签名管理中添加一个签名 在模板管理中添加一个模板, ...

  9. ABP集成短信发送模块

    ABPZero并没有手机短信发送功能,现在我们来集成一个,为后面注册.登录作铺垫. 阿里云短信服务 首先需要在阿里云开通短信服务,连接地址 开通后,在签名管理中添加一个签名 在模板管理中添加一个模板, ...

随机推荐

  1. 2017年上海金马五校程序设计竞赛:Problem C : Count the Number (模拟)

    Description Given n numbers, your task is to insert '+' or '-' in front of each number to construct ...

  2. java List排序 顺序 倒序 随机

    List list = new LinkedList(); for ( int i = 0 ; i < 9 ; i ++ ) { list.add( " a " + i); ...

  3. linux下使用wget下载整个网站

    linux下可以用wget下载整个网站,而且网站链接中包含utf-8编码的中文也能正确处理. 简要方法记录如下: wget --restrict-file-name=ascii -m -c -nv - ...

  4. python 匿名函数和递归函数

    匿名函数lambda 匿名函数:lambda  x,y:x+y 上述解释:x,y分别是函数的参数,x+y是函数的返回值 匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数 ...

  5. 点击回到之前页面,并不刷新js histroy

    history是你浏览过的网页的url(简单的说就是网址)的集合,也就是你的浏览器里的那个历史记录.它在js里是一个内置对象,就跟document一样,它有自己的方法,go就是其中一个. 这个方法的参 ...

  6. 区块链开发(七)truffle使用入门汇总

    截止上篇博客,以太坊区块链开发的环境和框架基本上搭建完毕.这一篇博客重点梳理一下基本的流程和操作演示. 前奏 基于前面的安装配置,现在重新梳理一遍,以前博客讲到的就在这里一笔带过. (1)创建一个工作 ...

  7. python 判断质数还是合数

    while 1: s = input('请输入一个数:') s = int(s) if s == 2: print('质数') else: if s == 0 or s == 1: print('都不 ...

  8. js的变量的有效域

    function test(o) { var i=0; if(typeof o=="object") { var j=1; for(var k=0;k<10;k++) { c ...

  9. Vue CLI3 关闭热替换后出现的warning

    用vue cli3做项目的时候如果开启了typescript的严格模式,在dev server热替换的时候往往就会打出一大堆warning,严重的影响了编译效率.官方并没有提供关闭warning的ap ...

  10. python操作数据库的几种方式

    参照python 操作mysql python-mysqldb : http://www.cnblogs.com/wupeiqi/articles/5095821.html (python3 不支持) ...