【Swift】MFMailComposeVCでメールを送信する
完成図
解説
新規メールを起動し、指定したメアドにメールを送れる。
・設定できる項目は
- 宛先
- Cc
- Bc
- 件名
- 本文
の5つ。
参考になった動画がこちら。
↓
注意点が1つ。
スマホの環境設定からメールのアカウントを追加しないと起動しない。
GmailやYahooなどのiCloud以外のアカウントを追加する必要がある。
※2019/2/17更新
didFinishWithのメソッド内にあるresultとswitch構文を用いれば、
- キャンセル
- 下書き保存
- 送信
のそれぞれの動作に応じた処理を施すことができる。
例えば、
- 送信したらUIAlertControllerを起動
- キャンセル、送信時にdismissで元の画面へ戻る
など。
ソースコード
import UIKit import MessageUI class Contact: UIViewController,MFMailComposeViewControllerDelegate { override func viewDidLoad() { super.viewDidLoad() sendMail() } //新規メールを開く func sendMail() { //メール送信が可能なら if MFMailComposeViewController.canSendMail() { //MFMailComposeVCのインスタンス let mail = MFMailComposeViewController() //MFMailComposeのデリゲート mail.mailComposeDelegate = self //送り先 mail.setToRecipients(["test1@gmail.com","test2@gmail.com"]) //Cc mail.setCcRecipients(["mike@gmail.com"]) //Bcc mail.setBccRecipients(["amy@gmail.com"]) //件名 mail.setSubject("件名") //メッセージ本文 mail.setMessageBody("このメールはMFMailComposeViewControllerから送られました。", isHTML: false) //メールを表示 self.present(mail, animated: true, completion: nil) //メール送信が不可能なら } else { //アラートで通知 let alert = UIAlertController(title: "No Mail Accounts", message: "Please set up mail accounts", preferredStyle: .alert) let dismiss = UIAlertAction(title: "OK", style: .cancel, handler: nil) alert.addAction(dismiss) self.present(alert, animated: true, completion: nil) } } //エラー処理 func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { if error != nil { //送信失敗 print(error) } else { switch result { case .cancelled: //キャンセル case .saved: //下書き保存 case .sent: //送信 default: break } controller.dismiss(animated: true, completion: nil) } } }