[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)
    }

シェアする

  • このエントリーをはてなブックマークに追加

フォローする