1
私は自分のアプリでメールを送信するためにMessageUIとMFMailComposeViewControllerを実装しようとしています。プロセスを開始してもメールクライアントから実際に離れることができない限り、すべてうまくいくようです。私がsendを押すと、sendが送信され、それ以外は何もしません(アプリケーションには戻りません)。私がキャンセルを押すと、それはドラフトとキットを削除しません(または、再びアプリケーションに戻ります)。iOS Appの新しいメッセージの電子メールクライアントに詰まっています
import UIKit
import MessageUI
class ContactFormViewController: UITableViewController, MFMailComposeViewControllerDelegate {
...
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.item{
case 0:
followOnEmail()
default:
break
}
}
private func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
controller.dismiss(animated: true, completion: nil)
}
func followOnEmail(){
if !MFMailComposeViewController.canSendMail(){
print("Mail services are not available")
return
}
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
// Configure the fields of the interface.
composeVC.setToRecipients(["[email protected]"])
composeVC.setSubject("")
composeVC.setMessageBody("Please enter your message below.", isHTML: false)
if MFMailComposeViewController.canSendMail(){
// Present the view controller modally.
self.present(composeVC, animated: true, completion: nil)
}
else{
self.showSendMailErrorAlert()
}
}
...
func showSendMailErrorAlert(){
let alertController = UIAlertController(title: "Could Not Send Email", message: "Your device could not send email. Please check e-mail configuration and try again.", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "Close", style: .default, handler: nil)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
}
}