MFMailComposeViewController
- 系统提供的类
- 使用系统邮件来实现发送邮件
企业微信截图_9a41540d-fdd0-43ec-9920-00b212f08d35.png
- 项目中先导入MessageUI.framework
- 先判断是否能发送邮件
if !MFMailComposeViewController.canSendMail() {
//不支持发送邮件
}
else {
//支持发送邮件
}
- 调起系统发送邮件界面
let mail = MFMailComposeViewController()
mail.navigationBar.tintColor = UIColor.blue //导航颜色
mail.setToRecipients(["123456789@qq.com"]) //设置收件地址
mail.setCcRecipients(["123456789@qq.com"]) //添加抄送
mail.setBccRecipients(["123456789@qq.com"]) //秘密抄送
mail.mailComposeDelegate = self //代理
mail.setSubject("邮件标题")
//发送文字
mail.setMessageBody("文字内容", isHTML: false) //邮件主体内容
//发送图片
let imageData: NSData = UIImagePNGRepresentation(UIImage(named: "图片名字")!)! as NSData
mail.addAttachmentData(imageData as Data, mimeType: "", fileName: "图片名字.png")
present(mail, animated: true, completion: nil)
- 代理方法
1- 遵循:MFMailComposeViewControllerDelegate
2- 设置代理:mail.mailComposeDelegate = self
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
if result == MFMailComposeResult.sent {
//发送成功
}
else if result == MFMailComposeResult.cancelled {
//取消发送
}
else if result == MFMailComposeResult.failed {
//发送失败
}
else {
//已保存
}
dismiss(animated: true, completion: nil)
}
测试
在测试之前,需要先配置一下测试机上的系统邮件。(以iOS 12为例)
设置 -> 密码与账号 -> 添加账号
在网页登录qq邮箱,设置->账户
-
最后可以拿到
授权码
账号.png
开启IMAP.png
验证密保.png
授权码.png -
在iPhone上的添加自己的邮箱账号
设置.png
账号.png
添加.png
填写授权码.png -
将获取到的
授权码
,填写在密码框中。然后点击下一步,即可添加入邮箱账号。
手机邮箱.png -
最后在邮件中,可以看到你添加的邮箱账号。
企业微信截图_ac20a22d-96a9-49bb-8415-9de6390a6168.png 这样就可以进行测试了。