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];
}
p.p1 { margin: 0; font: 14px "Lucida Grande"; -webkit-text-stroke: #000000; background-color: rgba(239, 245, 251, 1) }
span.s1 { font-kerning: none }
p.p1 { margin: 0; font: 12px "Lucida Grande"; color: rgba(116, 62, 4, 1); -webkit-text-stroke: #743e04; background-color: rgba(255, 249, 227, 1) }
span.s1 { font-kerning: none }
最新文章
- MongoDB学习系列(1)--入门介绍
- ZeroMQ接口函数之 :zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象
- unity 3d孤岛求生案例代码解析
- Eclipse闪退无法打开的解决方法
- [转]silverlight Datagrid 行上增加ToolTip
- alpha发布用户数
- PHP使用Xdebug进行远程调试
- No mapping found for HTTP request with URI [] in DispatcherServlet with name &#39;appServlet&#39;
- ruby的hash学习笔记例: 将字符串文本中的单词存放在map中
- 二十、Android -- SDcard文件读取和保存
- HDOJ2012素数判定
- make menuconfig出错需要安装文件
- WPF学习小记
- Cordova+Asp.net Mvc+GIS
- 【C语言探索之旅】 第二部分第八课:动态分配
- Linux-Shell编程之求命令行中所有整数之和
- 学习php
- mac eclipse中运行tomcat出现错误:-Djava.endorsed.dirs=D:\Tomcat 9.0\endorsed is not supported
- [Postman]发送第一个请求(1)
- 【回顾】html属性、标题、段落、文本格式化
热门文章
- robot_framewok自动化测试--(5)Screenshot 库
- D3.js V5 教程
- Solon &; Solon Cloud 1.5.62 发布,轻量级 Java 基础开发框架
- SpringCloud config native 配置
- windows 上搭建 sftp 服务器 -freesshd全过程( 在linux上部署逐浪CMS的必读教程)
- ES6基础知识(Map用法)
- SpringCloud升级之路2020.0.x版-36. 验证断路器正确性
- java中static关键字的解析
- [ARC117D]Miracle Tree
- CF1540B Tree Array