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)
}
コメント