博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Xcode 实际操作]八、网络与多线程-(7)使用MessageUI框架,创建并发送一封带有附件的邮件...
阅读量:4704 次
发布时间:2019-06-10

本文共 3688 字,大约阅读时间需要 12 分钟。

目录:

本文将演示如何使用MessageUI框架,创建并发送一封带有附件的邮件。

使用邮件编辑视图控制器(MFMailComposeViewController)实现邮件功能。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

1 import UIKit  2 //导入需要使用的框架MessageUI  3 //该框架为发送短信和邮件,提供了具有标准组成接口的、自定义的视图控制器  4 import MessageUI  5   6 //添加邮件编辑视图控制器代理协议MFMailComposeViewControllerDelegate,  7 //委托方法包含在该代理协议中。  8 class ViewController: UIViewController, MFMailComposeViewControllerDelegate {  9      10     override func viewDidLoad() { 11         super.viewDidLoad() 12         // Do any additional setup after loading the view, typically from a nib. 13          14         //创建一个位置在(40,80),尺寸为(240,44)的显示区域 15         let rect = CGRect(x: 40, y: 80, width: 240, height: 44) 16         //初始化一个按钮控件,并设置其位置和尺寸信息, 17         //当点击按钮时,谈出邮件编辑窗口 18         let button = UIButton(frame: rect) 19         //设置按钮在正常状态下的标题文字 20         button.setTitle("Write a mail", for: UIControl.State()) 21         //设置按钮的背景颜色为紫色 22         button.backgroundColor = UIColor.purple 23         //给按钮绑定点击事件 24         button.addTarget(self, action: #selector(ViewController.sendEmail),  25         for: UIControl.Event.touchUpInside) 26         //将按钮添加到当前视图控制器的根视图 27         self.view.addSubview(button) 28     } 29      30     //创建一个方法,用来响应按钮的点击事件 31     @objc func sendEmail() 32     { 33         if(!MFMailComposeViewController.canSendMail()) 34         { 35             print("提示用户需要在[设置 > 邮件]页面添加邮箱账号。") 36             return 37         } 38         //初始化一个邮件视图控制器 39         let mailBox = MFMailComposeViewController() 40         //创建一个数组,用来设置收件人的邮箱 41         let recipients = ["newsagency@163.com"] 42         //设置邮件发送到的目标邮箱 43         mailBox.setToRecipients(recipients) 44         //设置邮件的标题文字 45         mailBox.setSubject("Information!") 46          47         //创建一个字符串,作为邮件的主题内容 48         let message = "Hi, can you do me a favor" 49         //邮件的内容支持网页代码格式 50         mailBox.setMessageBody(message, isHTML: true) 51          52         //从项目中加载一张图片,作为邮件的附件 53         let attachedPic = UIImage(named: "Pic1.png") 54         //将图片的内容,压缩并转化为二进制数据格式 55         let imageData = attachedPic!.pngData() 56         //将转换格式后的数据对象,作为邮件的附件 57         mailBox.addAttachmentData(imageData!, mimeType: "", fileName: "Pic.png") 58          59         //设置邮件发送的监听代理对象,为当前的视图控制器对象 60         mailBox.mailComposeDelegate = self 61         //显示邮件的编辑视图 62         self.present(mailBox, animated: true, completion: nil) 63     } 64      65     //添加一个方法,用来响应邮件发送的结果事件 66     func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) 67     { 68         //遍历邮件的几种发送状态 69  70         //当用户取消邮件发送时 71         if(result == MFMailComposeResult.cancelled) 72         { 73             print(">>>> MFMailComposeResultCancelled") 74         } 75         //当邮件发送失败时 76         else if(result == MFMailComposeResult.failed) 77         { 78             //在控制台打印输出邮件发送失败的日志 79             print(">>>> MFMailComposeResultFailed") 80         } 81         //当邮件被成功保存时 82         else if(result == MFMailComposeResult.saved) 83         { 84             //在控制台打印输出邮件被成功保存的日志 85             print(">>>> MFMailComposeResultSaved") 86         } 87         //当邮件发送成功时 88         else if(result == MFMailComposeResult.sent) 89         { 90             //在控制台打印输出邮件发送成功的日志 91             print(">>>> MFMailComposeResultSent") 92         } 93         //发送邮件后,关闭邮件视图控制器 94         controller.dismiss(animated: true, completion: nil) 95     } 96      97     override func didReceiveMemoryWarning() { 98         super.didReceiveMemoryWarning() 99         // Dispose of any resources that can be recreated.100     }101 }

 

转载于:https://www.cnblogs.com/strengthen/p/10055392.html

你可能感兴趣的文章
tomcat启动错误org.springframework.beans.factory.CannotLoadBeanClassException的解决
查看>>
在Ubuntu中安装配置java后运行java -version时提示二进制文件不能执行
查看>>
太原中软教你Java入门
查看>>
解决数据库卡死问题
查看>>
JavaScript数据类型之null和undeined
查看>>
文件首行为空白行,为什么该行字符串长度为1(line.length()=1)
查看>>
ES5初尝试Object.create
查看>>
NTP校时设置
查看>>
Perl 面对对象的案例理解
查看>>
两数组比较,筛选出不同元素(附数组去重)
查看>>
IOS学习之路十九(JSON与Arrays 或者 Dictionaries相互转换)
查看>>
多线程简单实例(2)生产者和消费者
查看>>
Git在合并时遇到unrelated history提示时无法merge
查看>>
全自动ARP实时绑定BAT文件
查看>>
如何将.class文件反编译为.java文件
查看>>
POJ 1154 LETTERS dfs
查看>>
poj 3009 Curling 2.0(dfs)
查看>>
新浪微博客户端(10)-切换多个fragment
查看>>
新浪微博客户端(12)-判断当前软件是否是新版本(是否显示新特性)
查看>>
线段树1——神奇的数据结构
查看>>