Sending an email from swift 3

前端 未结 5 2056
广开言路
广开言路 2020-12-25 09:39

I am trying to set up an app with send email option.

I have this code:

import Foundation
import MessageUI
import UIKit

class emailClass: UIViewContr         


        
5条回答
  •  庸人自扰
    2020-12-25 10:33

    Here's how I did it. It looks like you followed the documentation very well, I thought I'd add my variation in case it helps someone else. Plus, this is a little more updated to current (Aug 2017) syntax.

    Conform to the MFMailComposeViewControllerDelegate protocol, and check if the device can send mail.

    import Foundation
    import UIKit
    import MessageUI
    
    class WelcomeViewController: UIViewController, MFMailComposeViewControllerDelegate {
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        if !MFMailComposeViewController.canSendMail() {
            print("Mail services are not available")
            return
        }
    }
    

    My app uses an IBAction to initiate the mail composition.

    @IBAction func sendFeedbackButtonTapped(_ sender: Any) {
    
        let composeVC = MFMailComposeViewController()
        composeVC.mailComposeDelegate = self
    
        // Configure the fields of the interface.
        composeVC.setToRecipients(["exampleEmail@email.com"])
        composeVC.setSubject("Message Subject")
        composeVC.setMessageBody("Message content.", isHTML: false)
    
        // Present the view controller modally.
        self.present(composeVC, animated: true, completion: nil)
    
    }
    

    About the following mailComposeController function, the documentation says

    The mail compose view controller is not dismissed automatically. When the user taps the buttons to send the email or cancel the interface, the mail compose view controller calls the mailComposeController(_:didFinishWith:error:) method of its delegate. Your implementation of that method must dismiss the view controller explicitly, as shown in Listing 3. You can also use this method to check the result of the operation.

    func mailComposeController(_ controller: MFMailComposeViewController,
                               didFinishWith result: MFMailComposeResult, error: Error?) {
        // Check the result or perform other tasks.
    
        // Dismiss the mail compose view controller.
        controller.dismiss(animated: true, completion: nil)
       }
    }
    

    Source Apple Documentation: MFMailComposeViewController

提交回复
热议问题