今天整理了一下發(fā)短信和發(fā)郵件的方法乳讥。整理如下
短信方法一
//直接跳轉(zhuǎn)到系統(tǒng)的郵件客戶端笋颤,發(fā)完郵件后不能回到原應(yīng)用
NSURL *url = [NSURL URLWithString:@"mailto://123456@qq.com"];
[[UIApplication sharedApplication] openURL:url];
短信方法二:使用了iOS4.0之后提供的MFMessageComposeViewController钓简。
??????? MFMessageComposeViewController 提供了發(fā)送短信頁面屡穗,不需要自己定制厅目。使用的時(shí)候先倒入頭文件<MessageUI/MessageUI.h>番枚,然后設(shè)置并服從代理messageComposeDelegate(注意代理名字)。注意使用canSendText檢查設(shè)備是否支持發(fā)送短信损敷。操作完成之后可以返回原應(yīng)用
if ([MFMessageComposeViewController canSendText]) {??
??? MFMessageComposeViewController *VC = [[MFMessageComposeViewController alloc] init];
???? //設(shè)置短信內(nèi)容
???? VC.body = @"測試信息發(fā)布葫笼。。拗馒。";
???? //設(shè)置收件人列表
???? VC.recipients = @[@"10086"];
????? //設(shè)置代理
???? VC.messageComposeDelegate = self;//注意代理名字
???? [self presentViewController:VC animated:YES completion:nil];
}else {
??? NSLog(@"不支持");
}
實(shí)現(xiàn)MFMessageComposeViewControllerDelegate代理方法
#pragma mark -- MFMessageComposeViewControllerDelegate 短信代理
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
??? switch (result) {
??????? case 0:// 取消
??????? {
??????????? NSLog(@"取消發(fā)送");
??????? }
??????????? break;
??????? case 1:// 成功
??????? {
??????????? NSLog(@"發(fā)生成功");
??????? }
??????????? break;
??????? case 2:// 失敗
??????? {
??????????? NSLog(@"發(fā)送失敗");
??????? }
??????????? break;
??????? default:
??????????? break;
??? }
??? //不管成功還是失敗路星,收回短信VC
??? [controller dismissViewControllerAnimated:YES completion:nil];
}
發(fā)郵件方法一
用openURL方法跳轉(zhuǎn)到系統(tǒng)的郵件客戶端,沒有定制發(fā)送內(nèi)容诱桂、標(biāo)題洋丐、附件、圖片等挥等,發(fā)完郵件后不能回到原應(yīng)用友绝。
NSURL *url = [NSURL URLWithString:@"mailto://123456@qq.com"];
[[UIApplication sharedApplication] openURL:url];
發(fā)郵件方法二
還是用openURL方法跳轉(zhuǎn)到郵件客戶端,此方法可以附加上收件人肝劲、抄送迁客、密送郭宝、郵件主題、內(nèi)容等功能掷漱。不過操作完成之后還是不能回到原應(yīng)用粘室。
//直接跳轉(zhuǎn)到系統(tǒng)的郵件客戶端,之后不能回到原應(yīng)用卜范,比較復(fù)雜
NSMutableString *urlStr = [[NSMutableString alloc]init];
//添加收件人
NSArray *toRecipients = [NSArray arrayWithObject: @"first@example.com"];
[urlStr appendFormat:@"mailto:%@", [toRecipients componentsJoinedByString:@","]];
//添加抄送
NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];
[urlStr appendFormat:@"?cc=%@", [ccRecipients componentsJoinedByString:@","]];
//添加密送
NSArray *bccRecipients = [NSArray arrayWithObjects:@"fourth@example.com", nil];
[urlStr appendFormat:@"&bcc=%@", [bccRecipients componentsJoinedByString:@","]];
//添加主題
[urlStr appendString:@"&subject=my email"];
//添加郵件內(nèi)容
[urlStr appendString:@"&body=email body!"];
NSString* email = [urlStr stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];
發(fā)郵件方法三:使用MFMailComposeViewController
MFMailComposeViewController和發(fā)短信的有點(diǎn)類似衔统,也是提供的有界面,不需要自己定義海雪。使用時(shí)首先要引入頭文件<MessageUI/MessageUI.h>锦爵,然后開始使用MFMailComposeViewController控制器,記得設(shè)置代理和服從代理喳魏,代理名稱mailComposeDelegate棉浸。用canSendMail檢查設(shè)備是否支持發(fā)送郵件。
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *VC = [[MFMailComposeViewController alloc] init];
//注意代理名字
??? VC.mailComposeDelegate = self;
//郵件主題
??? [VC setSubject:@"郵件標(biāo)題"];
//添加收件人
???? [VC setToRecipients:@[@"1@qq.com"]];
//添加抄送
???? [VC setCcRecipients:@[@"2@qq.com"]];
//添加密送
???? [VC setBccRecipients:@[@"3@qq.com"]];
//添加郵件內(nèi)容 isHTML:是否以html格式展示文本
???? [VC setMessageBody:@"此處為<font color='red'>郵件</font>的正文" isHTML:YES];
//添加圖片
??? UIImage *image = [UIImage imageNamed:@"123.png"];
???? NSData *imageData = UIImagePNGRepresentation(image);
?? ? [VC addAttachmentData:imageData mimeType:@"" fileName:@"無所謂.png"];
//添加附件
???? NSString *filePath = [[NSBundle mainBundle] pathForResource:@"ECT4" ofType:@"txt"];
???? NSData *fileData = [NSData dataWithContentsOfFile:filePath];
???? [VC addAttachmentData:fileData mimeType:@"" fileName:@"附件.txt"];
???? [self presentViewController:VC animated:YES completion:nil];
}else {
//如果跳轉(zhuǎn)到了這一步刺彩,把真機(jī)上的系統(tǒng)自帶郵件客戶端配置一下迷郑,配置完記得重啟手機(jī)。
???? NSLog(@"用戶沒有設(shè)置郵件賬戶");
}
可以發(fā)現(xiàn)MFMailComposeViewController可以添加照片和附件创倔,比較方便嗡害。
針對發(fā)短信和發(fā)郵件功能,本文推薦分別使用MFMessageComposeViewController方法和MFMailComposeViewController方法畦攘。
另:openURL: 此方法在iOS10中廢棄霸妹。代替方法在上一篇中有寫。
項(xiàng)目地址:https://pan.baidu.com/s/1kVBuRsj