iOS/Swift

[iOS 앱개발] 앱에서 이메일 보내기 예제

단비_danbee 2022. 12. 5. 18:23

 

//
//  ViewController.swift
//  sendEmail
//
//  Created by 박단비 on 2022/12/05.
//

import MessageUI
import SafariServices
import UIKit

class ViewController: UIViewController, UINavigationControllerDelegate, MFMailComposeViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        let button = UIButton(frame: CGRect(x:0, y:0, width: 220, height: 50))
        view.addSubview(button)
        button.setTitle("Contact Us", for: .normal)
        button.backgroundColor = .link
        button.setTitleColor(.white, for: .normal)
        button.center = view.center
        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
    }
    @objc private func didTapButton(){
        if MFMailComposeViewController.canSendMail(){
            let vc = MFMailComposeViewController()
            vc.delegate = self
            vc.setSubject("Contact Us / Feedback")
            vc.setToRecipients(["hello@danbee.io"])
            vc.setMessageBody("<h1>Hello world</h1>", isHTML: true)
            //vc.addAttachmentData(<#T##attachment: Data##Data#>, mimeType: <#T##String#>, fileName: <#T##String#>) // 버그 수집, 스크린샷 등 첨부파일 기능
            present(UINavigationController(rootViewController: vc),
                    animated: true)
        }
        else {
            guard let url = URL(string: "https://www.google.com") else {
                return
            }
            let vc = SFSafariViewController(url: url)
            present(vc, animated: true)
        }
         
    }
    
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?){
        controller.dismiss(animated: true, completion: nil)
    }
}

아쉽지만 시뮬레이터에 Mail 앱이 없기 때문에 실제 기기를 연동해서 테스트 하지 않으면 메일앱이 잘 실행되는지 확인 할 수 없다.

추후에 기기를 연결해서 테스트 해보기.

일단 소스 자체는 오류없기 때문에 기기 연동시 잘 실행될 것으로 예상된다.