App内邮件发送
Posted iOS的美丽岁月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了App内邮件发送相关的知识,希望对你有一定的参考价值。
引入
上一篇我们介绍了App内发送短信。本节我们介绍在App 内如何发送邮件。
一:发送邮件的准备
使用邮件发送功能,我们需要引入 #import <MessageUI/MessageUI.h> 头文件;使用该头文件下的 MFMailComposeViewController 类。头文件的引入实例如下:
#import "ViewController.h" #import <MessageUI/MessageUI.h>
引入头文件后,要准守 MFMailComposeViewControllerDelegate 协议。同时要实现 mailComposeController:didFinishWithResult:error: 方法处理邮件发送后的返回结果。
@interface ViewController ()<MFMailComposeViewControllerDelegate> @end
二、 MFMailComposeViewController 类的介绍
// 判断时候可以发送邮件 + (BOOL)canSendMail; // 设置邮件的代理,用于处理邮件发送后返回结果的处理 @property (nonatomic, nullable, assign) id<MFMailComposeViewControllerDelegate> mailComposeDelegate; // 设置邮件的主题 - (void)setSubject:(NSString *)subject; // 设置邮件的直接发送人 - (void)setToRecipients:(nullable NSArray<NSString *> *)toRecipients; // 设置邮件的抄送人 - (void)setCcRecipients:(nullable NSArray<NSString *> *)ccRecipients; // 设置邮件的密送人 - (void)setBccRecipients:(nullable NSArray<NSString *> *)bccRecipients; // TODO: To、Cc、Bcc 的区别 // To: 是发送给指定的某一个人。 // Cc: 是 Carbon Copy 的缩写。是抄送的意思。收件人可以看到邮件还抄送给其他的那些人。 // Bcc : 是 Blind Carbon Copy 的缩写。是秘密抄送的意思。收件人看不到还抄送了其他的那些人。 // 设置邮件的内容,ishtml是之是否将邮件内容转化为HTML格式 - (void)setMessageBody:(NSString *)body isHTML:(BOOL)isHTML; // 添加邮件的附件 - (void)addAttachmentData:(NSData *)attachment mimeType:(NSString *)mimeType fileName:(NSString *)filename; // 设置优先发送邮件的账户,如果账户不存在。则选取默认账户。ios11.0 以上可用 - (void)setPreferredSendingEmailAddress:(NSString *)emailAddress API_AVAILABLE(ios(11.0)); // 邮件发送后返回结果的处理函数 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(nullable NSError *)error;
三、MFMailComposeViewController 类的使用-(void)btnClick // 判断是否可以发送邮件 BOOL isSendEmail = [MFMailComposeViewController canSendMail]; if (!isSendEmail) // 不可发送邮件 return ; // 创建对象 MFMailComposeViewController * emailVc = [[MFMailComposeViewController alloc]init]; // 设置邮件的代理 emailVc.mailComposeDelegate = self; // 设置邮件的主题 [emailVc setSubject:@"NetWork小贱"]; // TODO: To、Cc、Bcc 的区别 // To: 是发送给指定的某一个人。 // Cc: 是 Carbon Copy 的缩写。是抄送的意思。收件人可以看到邮件还抄送给其他的那些人。 // Bcc : 是 Blind Carbon Copy 的缩写。是秘密抄送的意思。收件人看不到还抄送了其他的那些人。 // 设置发送单一指定邮件的接收人 [emailVc setToRecipients:@[@"1542100658@qq.com"]]; // 设置抄送人 [emailVc setCcRecipients:@[@"1542100658@qq.com",@"zhoushaungjian@anyitou.com"]]; // 设置密送人 [emailVc setBccRecipients:@[@"zhoushaungjian511@163.com"]]; // 设置邮件的内容,isHTML是是否将发送的消息转换成HTML的形式。 [emailVc setMessageBody:@"千里江陵一日还,两岸猿声啼不住,轻舟已过万重山" isHTML:YES]; // 设置邮件的附件 NSString * filePath = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"jpg"]; [emailVc addAttachmentData:[NSData dataWithContentsOfFile:filePath] mimeType:@"jpg" fileName:@"2.jpg"]; // 设置邮件的发送账户,如果没有账户则选择默认账户 [emailVc setPreferredSendingEmailAddress:@"zhoushaungjian@anyitou.com"]; // 调出界面 [self presentViewController:emailVc animated:YES completion:nil];
四、邮件发送后返回结果处理#pragma mark 邮件发送后结果处理代理 -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error // 邮件发送结果的处理 switch (result) // 用户取消邮件发送 case MFMailComposeResultCancelled: [self alertWithMessage:@"用户取消"]; break; // 邮件保存草稿箱 case MFMailComposeResultSaved: [self alertWithMessage:@"邮件已保存"]; break; // 邮件发送成功 case MFMailComposeResultSent: [self alertWithMessage:@"邮件发送成功"]; break; // 邮件发送失败 case MFMailComposeResultFailed: [self alertWithMessage:@"邮件发送失败"]; break; default: break; // 清楚发送邮件的界面 [controller dismissViewControllerAnimated:YES completion:nil]; // 消息提示(自动消失) -(void)alertWithMessage:(NSString*)message dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^ UIAlertController * alertVc = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alertVc animated:YES completion:^ [NSTimer scheduledTimerWithTimeInterval:3 repeats:NO block:^(NSTimer * _Nonnull timer) [alertVc dismissViewControllerAnimated:YES completion:^ [timer invalidate]; ]; ]; ]; );
五、效果展示
以上是关于App内邮件发送的主要内容,如果未能解决你的问题,请参考以下文章
pythonWeb框架flask中使用blinker信号机制解耦业务代码解决ImportError: cannot import name 'app',以异步发送邮件为例