[iOS] 앱에서 메일 보내기 기능 구현하기

홍승현·2022년 8월 2일
0

iOS

목록 보기
2/3

메일 보내기 기능을 구현하려면 MessageUI를 import 해야한다.

import MessageUI

구현하기 앞서 ⚠️
해당 기능을 테스트하려면 실기기로 진행해야하며, 실기기에서도 Mail계정이 연동되어있어야 오류가 발생하지 않습니다.
시뮬레이터는 Mail 연동이 되어있지 않으므로 오류가 발생합니다.

  • 메일을 보냈을 때를 처리하기 위한 delegate 설정
extension ViewController: MFMailComposeViewControllerDelegate {
  func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    
  }
}
  • 메일을 보내려고 셀이나 버튼을 눌렀을 때 MFMailComposeViewController.canSendMail()로 전달가능 유무를 판별할 수 있다. 만약 false라면, 메일 보내기 기능을 사용할 수 없다고 해석하면 된다.
guard MFMailComposeViewController.canSendMail() else { // 실패 처리
  //codes..
  return
}
  • 메일을 전달하기 위해서는 MFMailComposeViewController를 구현하여 view에 띄워주어야한다.
    • setToRecipents(_:): 메일발송할 사람의 이메일
    • setSubject(_:): 메일의 제목
    • setMessageBody(_:isHTML:): 메일의 본문 내용, isHTML 파라미터는 html 내용이 포함되어있으면 true, 평문이면 false
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
composeVC.setToRecipients(["email@1234.com"])
composeVC.setSubject("<App name> 문의 및 의견")
composeVC.setMessageBody(" 본문 내용입니다. ", isHTML: false)

만약 사용자가 메일 보내기 버튼을 눌렀을 때 sendMail 함수가 실행된다고 가정해보면 다음과 같이 코드를 짤 수 있다.

/// 전달가능하지 않은 상태일 때 실행되는 메서드
private func showMailErrorAlert() {
  let controller = UIAlertController(title: "실패", message: "아이폰 메일 설정을 확인해주세요.", preferredStyle: .alert)
  controller.addAction(UIAlertAction(title: "확인", style: .default))
  present(controller, animated: true)
}

private func sendMail() {
  // 메일 전달 가능 유무 판별
  guard MFMailComposeViewController.canSendMail() else {
    showMailErrorAlert()
    return
  }
  
  let composeVC = MFMailComposeViewController()
  composeVC.mailComposeDelegate = self
  composeVC.setToRecipients(["email@1234.com"])
  composeVC.setSubject("<앱 이름> 문의 및 의견")
  present(composeVC, animated: true)
}
profile
블로그 이전: https://www.whitehyun.com

0개의 댓글