Mail

不能在模擬器上跑,會crash。

簡單流程

  1. 初始化MFMailComposeViewController
  2. 設定標題以及收件者
  3. 推出MFMailComposeViewController
1
2
3
4
5
6
7
8
import MessageUI

func sendMail(){
  let mailController = MFMailComposeViewController()
  mailController.setSubject("swift程式設計入門")
  mailController.setToRecipients(["cdfq152313@gmail.com"])
  self.present(mailController, animated: true, completion: nil)
}

測試能不能使用Mail功能

像是在模擬器上就不能使用。

1
2
3
4
5
6
if MFMailComposeViewController.canSendMail(){
	// 可以寄信
}
else{
	// 不能寄信
}

mailComposeDelegate

設定mailComposeDelegate可以讓寄信完後,dismiss到原來畫面,這邊要注意的是不要設成一般delegate了。

1
2
3
4
5
mailController.mailComposeDelegate = self

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
		dismiss(animated: true, completion: nil)
}

如果想知道寄信後的狀態可參考第二個參數didFinishWith result。按住command + 滑鼠左鍵在MFMailCompseResult可以知道有下列狀態。

1
2
3
4
5
6
public enum MFMailComposeResult : Int {
    case cancelled
    case saved
    case sent
    case failed
}

夾帶圖片

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 夾一張圖片
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檔

1
2
let body = "<h1>HelloWorld</h1>"
mailController.setMessageBody(body, isHTML:true)

Message

同樣不能在模擬器上跑,會crash。

簡單流程

由於是訊息,只要填body即可。收件者可以是

  • 人名
  • 手機號碼
  • 郵件信箱
1
2
3
4
5
6
func sendMessage(){
  let controller = MFMessageComposeViewController()
  controller.body = "hello"
  controller.recipients = ["Denny", "0978948787", "cdfq152313@gmail.com"]
  self.present(controller, animated: true, completion: nil)
}