Swift Mail & Message
Contents
不能在模擬器上跑,會crash。
簡單流程
- 初始化MFMailComposeViewController
- 設定標題以及收件者
- 推出MFMailComposeViewController
import MessageUI
func sendMail(){
let mailController = MFMailComposeViewController()
mailController.setSubject("swift程式設計入門")
mailController.setToRecipients(["cdfq152313@gmail.com"])
self.present(mailController, animated: true, completion: nil)
}
測試能不能使用Mail功能
像是在模擬器上就不能使用。
if MFMailComposeViewController.canSendMail(){
// 可以寄信
}
else{
// 不能寄信
}
mailComposeDelegate
設定mailComposeDelegate可以讓寄信完後,dismiss到原來畫面,這邊要注意的是不要設成一般delegate了。
mailController.mailComposeDelegate = self
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
dismiss(animated: true, completion: nil)
}
如果想知道寄信後的狀態可參考第二個參數didFinishWith result。按住command + 滑鼠左鍵在MFMailCompseResult可以知道有下列狀態。
public enum MFMailComposeResult : Int {
case cancelled
case saved
case sent
case failed
}
夾帶圖片
// 夾一張圖片
func mailCo
var image = UIImage(named: "book1")
var data = UIImageJPEGRepresentation(image!, 0.9)
mailController.addAttachmentData(data!, mimeType:"image/jpg", fileName: "book1.jpg")
// 可以夾不只一個圖片
image = UIImage(named: "book2")
data = UIImageJPEGRepresentation(image!, 0.9)
mailController.addAttachmentData(data!, mimeType: "image/jpg", fileName: "book2.jpg")
放置HTML檔
let body = "<h1>HelloWorld</h1>"
mailController.setMessageBody(body, isHTML:true)
Message
同樣不能在模擬器上跑,會crash。
簡單流程
由於是訊息,只要填body即可。收件者可以是
- 人名
- 手機號碼
- 郵件信箱
func sendMessage(){
let controller = MFMessageComposeViewController()
controller.body = "hello"
controller.recipients = ["Denny", "0978948787", "cdfq152313@gmail.com"]
self.present(controller, animated: true, completion: nil)
}