애플리케이션에서 메일을 보내는 것은 간단하다. 주의할 점은

  1. iOS 디바이스에서만 동작한다.(시뮬레이터에서는 동작하지 않는다.)
  2. 발신자는 iOS Mail에 계정이 등록되어 있어야 한다.

이 정도로 볼 수 있겠다. 2번의 경우 주의할 점에 굳이 적을 필요가 없을 정도로 당연한 것이지만 메일이 제대로 전송되지 않을 경우 확인할 요소로 생각하길 바란다. 필자가 이 경우로 삽질할 뻔 했다.

import UIKit
import MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func sendEmail(_ sender: UIButton) {
    	let mailComposeVC = configureMailComposer()
        if MFMailComposeViewController.canSendMail() {
            self.present(mailComposeVC, animated: true, completion: nil)
        } else {
            print("이메일을 보낼 수 없습니다.")
        }
    }

    func configureMailComposer() -> MFMailComposeViewController {
        let mailComposeVC = MFMailComposeViewController()
        mailComposeVC.mailComposeDelegate = self
        mailComposeVC.setToRecipients(["maybutter756@gmail.com"])
        mailComposeVC.setSubject("문의 메일")
        mailComposeVC.setMessageBody("문의합니다~", isHTML: false)
        
        return mailComposeVC
    }
    
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    	// 메일 보내기에 성공 또는 실패한 후 처리
        controller.dismiss(animated: true, completion: nil)
    }

}




실행해보면 다음과 같은 결과를 확인할 수 있다. 전체 소스코드는 여기에서 확인 가능하다!


참고: https://medium.com/@javedmultani16/send-email-from-ios-app-by-using-mfmailcomposeviewcontroller-in-swift-94c2d4f439af
https://faith-developer.tistory.com/165