iOS中发送短信/发送邮件的实现 韩俊强的博客
需要引入框架:
MessageUI.framework
布局如下:
短信和邮件:
#import "ViewController.h" #import <MessageUI/MessageUI.h> @interface ViewController ()<MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate>//遵循协议 @end @implementation ViewController
短信功能:
//短信功能 - (IBAction)messageButtonAction:(UIButton *)sender { #pragma mark 程序外发送短信 /* //定义打开短信的url, 关键字: sms: NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"sms://%@",@"10086"]]; //判断程序是否可以调用打开短信功能 if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; }else{ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持此短信功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } */ /* 用openURL来打开程序中的短信功能, 需要用到关键字: "sms:", 后面加上要发送的电话就可以了; 缺点:1.这个方法会跳出我们正在运行的程序,打开系统的短信界面, 但当用户关闭短信后, 无法回到程序. 2.这个方法我们只能定义要发送的手机号, 无法编辑发送的短信内容; */ }
#pragma mark 程序内发送短信
/*
为了弥补上述的两个方法的不足,需要另一种使用短信功能的方法:程序内使用短信功能.
*/
//1.添加短信所需要的框架: MessageUI.framework
//2.引入头文件,实现如下代码
//3.判断是否可以发短信
- (IBAction)messageButtonAction:(UIButton *)sender { #pragma mark 程序外发送短信 BOOL canSendMessage = [MFMessageComposeViewController canSendText]; if (canSendMessage) { //创建短信视图控制器 MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc]init]; //设置代理 messageVC.messageComposeDelegate = self; //设置短信内容 messageVC.body = @"来一条信息"; //设置电话, 是一个数组, 可以设置多个电话, 实现群发功能 messageVC.recipients = @[@"10086",@"10010"]; //打开短信功能, 通过这个方法会在程序内打开一个短信界面; [self presentViewController:messageVC animated:YES completion:nil]; }else{ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持此短信功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } }
信息的代理方法:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{ //MessageComposeResult 的枚举值: // MessageComposeResultCancelled, //取消发送短信功能 // MessageComposeResultSent, //发送短信 // MessageComposeResultFailed //发送失败 if (result == MessageComposeResultCancelled || result == MessageComposeResultSent) { [self dismissViewControllerAnimated:YES completion:nil]; } }
邮件功能:
//邮件功能 - (IBAction)mailButtonAction:(UIButton *)sender { #pragma mark 程序外发送邮件 /* //打开系统邮件页面, mailto: NSURL *mailURL = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@",@"13683799303@163.com"]]; //cc:抄送对象 subject:主题 body:内容 //NSURL *mailURL2 = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@?cc = %@&subject = %@&body = %@",@"13683799303@163.com",@"13683799303@26.com",@"邮件",@"你好啊!"]]; if ([[UIApplication sharedApplication] canOpenURL:mailURL]) { [[UIApplication sharedApplication] openURL:mailURL]; }else{ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } */ /* 此方法来发送邮件同上述短信一样,也会跳出程序,调用系统的邮件界面; */ #pragma mark 程序内发送邮件 //判断是否可以发送邮件 BOOL canSendMail = [MFMailComposeViewController canSendMail]; if (canSendMail) { //创建邮件视图控制器 MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc]init]; //设置接收邮件人, 数组,可以实现群发 [mailVC setToRecipients:@[@"13683799303@163.com",@"135895587@qq.com"]]; //设置抄送对象, [mailVC setCcRecipients:@[@"13683799303@163.com",@"135895587@qq.com"]]; //设置密送 [mailVC setBccRecipients:@[@"13683799303@163.com"]]; //设置内容 [mailVC setMessageBody:@"很高兴认识你" isHTML:NO]; //设置代理 mailVC.mailComposeDelegate = self; //打开邮件功能 [self presentViewController:mailVC animated:YES completion:nil]; }else{ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } }
邮件代理的方法:
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ // MFMailComposeResultCancelled, 取消发送 // MFMailComposeResultSaved, 保存 // MFMailComposeResultSent, 发送 // MFMailComposeResultFailed 发送失败 switch (result) { case MFMailComposeResultCancelled: NSLog(@"取消发送"); break; case MFMailComposeResultSaved: NSLog(@"保存"); break; case MFMailComposeResultSent: NSLog(@"发送成功"); break; case MFMailComposeResultFailed: NSLog(@"失败"); break; default: break; } [self dismissViewControllerAnimated:YES completion:nil]; }
最终效果:(由于模拟器没法演示发送短信,所以会出现下面的现象)
每日更新关注:http://weibo.com/hanjunqiang
新浪微博
iOS中发送短信/发送邮件的实现 韩俊强的博客的更多相关文章
- iOS中 支付宝钱包详解/第三方支付 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! iOS开发者交流QQ群: 446310206 一.在app中成功完成支付宝支付的过程 1.申请支付宝钱包.参考网址 ...
- iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! iOS开发人员交流QQ群: 446310206 一.在app中成功完毕支付宝支付的过程 1.申请支付宝钱包.參考网 ...
- iOS中 项目开发易错知识点总结 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 点击return取消textView 的响应者 - (BOOL)textFieldShouldReturn:(UI ...
- HTML5中 HTML列表/块/布局 韩俊强的博客
从简单到复杂HTML5详解:每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 1.HTML列表 1.有序 2.无序 3.有序star属性 4.有序无序列表 代码: ...
- iOS中 HTTP/Socket/TCP/IP通信协议具体解释 韩俊强的博客
简介: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 / ...
- iOS中 扫描二维码/生成二维码详解 韩俊强的博客
最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 指示根视图: se ...
- iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 ...
- iOS中 扫描二维码/生成二维码具体解释 韩俊强的博客
近期大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 指示根视图: se ...
- iOS中 Realm的学习与使用 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 有问题或技术交流可以咨询!欢迎加入! 这篇直接搬了一份官方文档过来看的 由于之前没用markdown搞的乱七八糟的 ...
随机推荐
- 美团、java后台实习、面经
3月27号投了美团java后台,29号收到面试邀请,好像是金融服务平台(提交简历的时候,我当时没注意随便填的···) 一面: 介绍项目经历 根据简历问一些问题:比如我简历上有区块链相关,会要求介绍一下 ...
- 算法工程师:双非渣硕是如何获得百度、京东双SP
本人本科硕士皆双非,和牛客大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了. 先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实 ...
- 反射 类的加载 Schema DOM 解析方式和解析器 命名空间
Day15 反射 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. l 加载 就是指将class文件读入内存,并为之创建 ...
- 跟着大佬重新入门DP
数列两段的最大字段和 POJ2479 Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41231 Acce ...
- Go 语言循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句. 以下为大多编程语言循环程序的流程图: Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执 ...
- Go 语言结构
Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello ...
- JMeter(十三)-代理服务器录制脚本
今天重点说一下jmeter如何利用自身的代理服务器录制脚本 1:工作台下创建代理服务器 2:配置代理,选择录制控制器 3:在Requests FIltering下添加排除模式,配置正则表达式.否则会录 ...
- sql server 的osql 使用例子
一次性执行一个语句并输出到文件: osql -Usa -dSCGWYDJ2012 -P -S192.168.56.1 -Q "exit( SELECT top 1 * FROM A08)&q ...
- 【Java集合系列】---总体框架
个的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作,一般来说,这些数据项的类型都是相同的,或者基类相同(若使用的语言支持继承),列表或数组通常不认为是集合,因为其大小固定,但是事实上 ...
- Eric5 for Python 3.3.3安装指南
一言蔽之,搭配是关键.以32位Window为例,先后安装: 1.PyQt PyQt4-4.10.3-gpl-Py3.3-Qt4.8.5-x32.exe http://www.riverbankcomp ...