Swift - 邮件发送功能的实现
(本文代码已升级至Swift3)
使用MessageUI.framework框架除了可以发送短信,还能发送Email,步骤如下:

使用MessageUI.framework框架除了可以发送短信,还能发送Email,步骤如下:
(1)首先判断设备是否有发送邮件功能
(2)如果设备允许发送邮件,创建一个 MFMailComposeViewController 视图控制器,并对其设置邮件标题,正文内容,收件人,附件等。
(3)邮件发送后,会执行回调代理方法,可以获取发送结果(成功,失败或取消)
效果图如下:

代码如下:
import UIKit import MessageUI class ViewController: UIViewController ,UINavigationControllerDelegate, MFMailComposeViewControllerDelegate{ override func viewDidLoad() { super.viewDidLoad() //首先要判断设备具不具备发送邮件功能 if MFMailComposeViewController.canSendMail(){ let controller = MFMailComposeViewController() //设置代理 controller.mailComposeDelegate = self //设置主题 controller.setSubject("我是邮件标题") //设置收件人 controller.setToRecipients(["a1@hangge.com","a2@hangge.com"]) //设置抄送人 controller.setCcRecipients(["b1@hangge.com","b2@hangge.com"]) //设置密送人 controller.setBccRecipients(["c1@hangge.com","c2@hangge.com"]) //添加图片附件 let path = Bundle.main.path(forResource: "hangge.png", ofType: "") let url = URL(fileURLWithPath: path!) let myData = try! Data(contentsOf: url) controller.addAttachmentData(myData, mimeType: "image/png", fileName: "swift.png") //设置邮件正文内容(支持html) controller.setMessageBody("我是邮件正文", isHTML: false) //打开界面 self.present(controller, animated: true, completion: nil) }else{ print("本设备不能发送邮件") } } //发送邮件代理方法 func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { controller.dismiss(animated: true, completion: nil) switch result{ case .sent: print("邮件已发送") case .cancelled: print("邮件已取消") case .saved: print("邮件已保存") case .failed: print("邮件发送失败") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
出现这个错误是不是我的不支持邮件发送,我的是Xode7.1
switch result.value 这里报错了