Monday, 4 June 2018

MFMailComposeViewController not sending email or invoking delegate (MFMailComposeViewControllerDelegate)

I have a MFMailComposeViewController setup and presented as such:

class MyViewController: UIViewController {

    // MARK: - Properties
    let composeViewController = MFMailComposeViewController()

    // MARK: - Actions
    @IBAction func didTapSendInEmailButton() {
        composeViewController.mailComposeDelegate = self
        composeViewController.setToRecipients([Constants.contactRecipientEmail])
        composeViewController.setSubject(Constants.contactSubject)
        composeViewController.setMessageBody(Constans.body, isHTML: false)
        present(composeViewController, animated: true, completion: nil)
    }
}

// MARK: - MFMailComposeViewControllerDelegate
extension MyViewController: MFMailComposeViewControllerDelegate {
    private func mailComposeController(_ controller: MFMailComposeViewController,
                                       didFinishWith result: MFMailComposeResult,
                                       error: Error?) {
        switch result {
        case .sent:
            print("Email sent")
        case .saved:
            print("Draft saved")
        case .cancelled:
            print("Email cancelled")
        case  .failed:
            print("Email failed")
        }
        controller.dismiss(animated: true, completion: nil)
    }
}

I'm having two issues:

  1. After pressing "Send" on the composer, the email does NOT get sent.

  2. Neither is the MFMailComposeViewControllerDelegate invoked.

What may I be missing?



from MFMailComposeViewController not sending email or invoking delegate (MFMailComposeViewControllerDelegate)

No comments:

Post a Comment