Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

iPhone 앱에서 이메일을 보내는 방법 – URL Scheme과 MessageUI 프레임워크 완벽 가이드

앱에서 이메일을 보내려면 URL Scheme을 활용하고, 특정 이벤트가 발생했을 때 메일이 전송되도록 액션을 구현해야 합니다. 다만 일반 앱은 이메일을 직접 전송할 수 없으며, 메일 앱 자체를 개발하면서 iOS의 MessageUI 프레임워크를 사용하는 경우에만 가능합니다. 대신 수신자와 제목이 미리 채워진 상태로 외부 메일 앱을 열어주는 방식을 사용할 수 있습니다.

이 글에서는 두 가지 방법을 모두 소개합니다.

사전 준비

  • 새 프로젝트를 생성하고 첫 번째 뷰 컨트롤러로 이동합니다.
  • 버튼을 하나 추가하고 텍스트를 "open e-mail"로 변경한 뒤, ViewController.swift 클래스에 해당 액션을 생성합니다.
  • "open MF mail"이라는 이름의 두 번째 버튼을 추가하고, 마찬가지로 액션을 생성합니다.

방법 1 – URL Scheme으로 외부 메일 앱 열기

func sendEmail(email:String) {
    if let url = URL(string: "mailto:\(email)") {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url)
        } else {
            UIApplication.shared.openURL(url)
        }
    }
}

위 함수를 호출하면 지정한 이메일 주소로 메일을 보낼 수 있는 화면이 열립니다. 첫 번째 버튼인 "open e-mail"의 액션 본문 안에서 이 함수를 호출하면 되며, 실행 결과는 아래와 같습니다.

iOS 10 이상에서는 UIApplication.shared.open(url)을 사용하고, 그 이전 버전에서는 deprecated된 UIApplication.shared.openURL(url)을 사용한다는 점에 유의하세요.

방법 2 – MessageUI 프레임워크의 MFMailComposeViewController 활용

func sendMFmail(email: String) {
    let mailVC = MFMailComposeViewController()
    mailVC.mailComposeDelegate = self
    mailVC.setToRecipients([email])
    mailVC.setSubject("Testing sending email")
    mailVC.setMessageBody("Test Body of email", isHTML: false)
    present(mailVC, animated: true, completion: nil)
}

이 함수 역시 방법 1과 유사하게 "open MF mail" 버튼의 액션 본문 안에서 호출할 수 있으며, 실행하면 앱 내부에 메일 작성 화면이 나타나 결과를 바로 확인할 수 있습니다.

MessageUI 프레임워크를 사용하려면 파일 상단에 import MessageUI를 선언해야 하며, 뷰 컨트롤러가 MFMailComposeViewControllerDelegate를 채택하고 있어야 합니다.

참고 사항

시뮬레이터에서는 메일 기능이 지원되지 않기 때문에 위 코드는 시뮬레이터에서 정상적으로 동작하지 않습니다. 반드시 실제 iPhone 디바이스에서 테스트해야 합니다.