Swift(스위프트) iOS 프로그래밍에서 버튼에 메일을 보내는 기능을 할당하는 예제입니다.
추가하고자 하는 뷰 컨트롤러에 다음을 import합니다 (윗부분에 작성).
import MessageUI
아래 코드를 해당 뷰 컨트롤러의 extension으로 추가합니다.
extension TargetViewController: MFMailComposeViewControllerDelegate {
@IBAction func launchEmail(sender: UIButton) {
// 1
guard MFMailComposeViewController.canSendMail() else {
// 사용자의 메일 계정이 설정되어 있지 않아 메일을 보낼 수 없다는 경고 메시지 추가
return
}
// 2
let emailTitle = "앱 피드백" // 메일 제목
let messageBody =
"""
OS Version: \(UIDevice.current.systemVersion)
Device: (디바이스 알아내는 기능)
메일 내용 템플릿
"""
// 3
let toRecipents = ["메일주소@도메인.com"]
let mc: MFMailComposeViewController = MFMailComposeViewController()
mc.mailComposeDelegate = self
mc.setSubject(emailTitle)
mc.setMessageBody(messageBody, isHTML: false)
mc.setToRecipients(toRecipents)
self.present(mc, animated: true, completion: nil)
}
// 4
@objc(mailComposeController:didFinishWithResult:error:)
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult,error: Error?) {
controller.dismiss(animated: true)
}
}
- 앱 사용자의 아이폰 등에 메일 계정 설정이 되어있지 않은 경우 메일을 보낼 수 없으므로
UIAlert등을 이용해 경고 메시지를 표시합니다. - 기본 제목과 내용을 설정합니다.
- 받을 이메일 주소를 설정합니다.
MFMailComposeViewController는 이메일 창이 나타나는 컨트롤러입니다. 이 컨트롤러 내부 변수에 메일 주소, 제목, 내용을 지정합니다. 다음 이 뷰 컨트롤러에MFMailComposeViewController가 나타나도록present합니다.
- 메일이 취소된 경우
MFMailComposeViewController를 사라지게 합니다.
위에서 ‘디바이스 알아내는 기능’은 이 글을 참조하세요.
위의 @IBAction func launchEmail 를 스토리보드의 버튼과 연결합니다.

빨간 버튼을 클릭하면 (메일 계정이 설정된 경우) 아래와 같은 메일 작성 창이 뜹니다.






0개의 댓글