类:MFMailComposeViewController
这个类提供了一个标准的界面来管理编辑和发送邮件的!,可以使用这个控制器在你的App里展示一个标准邮件信息界面,在展示界面之前,应该给subject(标题),recipients(接收邮件的人),和attachment(邮件的附件)复制,在展示邮件界面后,用户可以在发送邮件前继续编辑你提供的值.
在展示邮件界面前,一定要先调用canSendMail方法,以此来确定当前设备是否支持发送邮件,如果返回值为NO,可以将不支持的信息提示用户,也可以不提供给用户发邮件的功能!千万不能在这个方法返回NO的情况下调用邮件界面!
if (![MFMailComposeViewController canSendMail]) {
NSLog(@"Mail services are not available.");
return;
}
//一定要加上判断!
MFMailComposeViewController* composeVC = [[MFMailComposeViewController alloc] init];
composeVC.mailComposeDelegate = self;//切记要设置代理!
// Configure the fields of the interface.
[composeVC setToRecipients:@[@"address@example.com"]]; //设置接受者
[composeVC setSubject:@"Hello!"];//设置标题
[composeVC setMessageBody:@"Hello from California!" isHTML:NO];//设置邮件内容,isHTML为yes的话可以将消息以Html语言传送!,为NO则只传明文
//界面需要手动调用
[self PResentViewController:composeVC animated:YES completion:nil];
下面是它的代理方法:
- (void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error //在这个方法里dimiss邮件界面,并根据result可以做相关处理,最好提示用户结果!
值得注意的是,邮件发送是通过系统的邮箱发送的,用户可以在邮件真正发送之前删除它,所以App里提示的MFMailComposeResult结果是成功的,但事实上并不意味着邮件就真的发送出去了,只是说明邮件已经被成功添加到了发送队列!实际上,在这个类里苹果并没有针对邮件真正的发送结果提供方法!
这个类还有几个方法
- setCcRecipients:
- setBccRecipients:
这两个方法都是设置抄送人的,不同的是上一个方法的抄送人大家都能相互看见,后面一个方法则是隐秘的抄送,也就是看不见其他的抄送人
en如果你需要传送文件或者图片之类的附件,则上面的setMessageBody则力不能及了,需要使用- addAttachmentData:mimeType:fileName:方法,其中mimeType可以自行百度
类:MFMessageComposeViewController
这个类提供了一个编辑和发送SMS(文字信息)或者MMS(多媒体信息)的标准界面,说白了就是短信和彩信!
这个类和上面的发送邮件的类差不多,不同的是判定方法不同!
+ canSendText //判断是否支持发送文字信息
+ canSendAttachments //判断是否支持发送附件
+ canSendSubject //判断是否支持发送主题信息
+ isSupportedAttachmentUTI: //判断是否支持附件UTI,UIT(Uniform Type Identifiers,相同类型标识符)每个UTI为特殊文件类型,数据类型,路径或者包类型等等提供了一个唯一的标识符,目的是为了识别文件类型是否被支持,比如Text文件有些是以Text结尾,有些是以txt结尾,有些能打开,有些打不开,所以苹果为了用户考虑,为每个文档数据提供了一个UTI标志符!说白了,就是针对一些特殊的文件格式,判断它的UTI,看能否用苹果支持的格式打开!
实际测试:邮件发送正常,信息发送会在弹出控制器后立刻取消,原因未明!如果真的需要可以通过openURL的方式在应用外打开发送信息的功能!
新闻热点
疑难解答