首页 > 系统 > iOS > 正文

iOS发送邮件和短信

2019-11-07 23:57:16
字体:
来源:转载
供稿:网友

类: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的方式在应用外打开发送信息的功能!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表