[Swift3]アプリからメーラー起動

スポンサーリンク

Swift2で行っていたメール送信機能 が、Swift3にしたところ色々修正が必要になったので、その修正内容をメモします。

// メーラー起動
func startMailer() {
    if MFMailComposeViewController.canSendMail()==false {
        print("Email Send Failed")
        return
    }
    let mailViewController = MFMailComposeViewController()
    // Toの宛先、カンマ区切りの複数件対応
    let toRecipients = toText.text!.components(separatedBy: ",")
    // Ccの宛先、カンマ区切りの複数件対応
    let CcRecipients = ccText.text!.components(separatedBy: ",")
    // 件名
    let subjectTextStr = exchangeSubject(subject: subjectText.text!)
    // 本文
    let messageBodyTextStr = exchangeMessageBody(subject: messageBodyText.text!)
    mailViewController.mailComposeDelegate = self
    mailViewController.setSubject(subjectTextStr)
    mailViewController.setToRecipients(toRecipients) //Toアドレスの表示
    mailViewController.setCcRecipients(CcRecipients) //Ccアドレスの表示
    mailViewController.setMessageBody(messageBodyTextStr, isHTML: false)
    // 添付ファイル
    // ※事前にNSTemporaryDirectory()+"/test.png"に画像を保存しています。
    let tmp = NSTemporaryDirectory()+"/test.png"
    let img = UIImage(named: tmp)
    if img != nil {
        let imageDataq = UIImageJPEGRepresentation(img!, 1.0)
        mailViewController.addAttachmentData(imageDataq!, mimeType: "image/png", fileName: "image")
    }
    // presentViewController -> present に変更
    self.present(mailViewController, animated: true, completion: nil)
}
// メールキャンセル
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    // MFMailComposeResultCancelled -> MFMailComposeResult.cancelled に変更。ほかも同様
    switch result.rawValue {
    case MFMailComposeResult.cancelled.rawValue:
        print("Email Send Cancelled")
        break
    case MFMailComposeResult.saved.rawValue:
        print("Email Saved as a Draft")
        break
    case MFMailComposeResult.sent.rawValue:
        print("Email Sent Successfully")
        break
    case MFMailComposeResult.failed.rawValue:
        print("Email Send Failed")
        break
    default:
        break
    }
    self.dismiss(animated: true, completion: nil)
}

コメント

タイトルとURLをコピーしました