대부분의 응용 프로그램에는 공유 기능이 있으므로 전자 메일에 첨부 파일을 보내는 방법을 아는 것은 매우 중요합니다. 따라서 실무 경험이 중요합니다.
이번 포스트에서는 Swift를 사용하여 메일에 첨부파일을 보내는 방법을 알아보겠습니다.
자, 시작하겠습니다.
이를 위해 사용자가 이메일 메시지를 관리, 편집 및 보낼 수 있는 인터페이스를 가진 표준 보기 컨트롤러인 MFMailComposeViewController를 사용할 것입니다.
https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller
에서 자세한 내용을 읽을 수 있습니다.또한 MFMailComposeViewControllerDelegate를 사용하여 MFMailComposeResult의 결과를 처리합니다.
https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontrollerdelegate
에서 이에 대해 읽을 수 있습니다.이해를 돕기 위해 하나의 샘플 애플리케이션을 만들 것입니다.
1단계 - Xcode 열기 → Single View Application → 이름을 EmailAttachment로 지정
2단계 - Main.storyboard를 열고 아래와 같이 메일을 보내는 버튼 이름을 하나 추가합니다.
3단계 - @IBAction을 생성하고 아래와 같이 btnSendMail로 이름을 지정합니다.
@IBAction 기능 btnSendMail(_ 발신자:모두) { }
4단계 - ViewController.swift에서 MessageUI 가져오기
MessageUI 가져오기
5단계 - MFMailComposeViewControllerDelegate에 대한 클래스 확인
클래스 ViewController:UIViewController, MFMailComposeViewControllerDelegate
6단계 - 프로젝트에 첨부 파일 추가,
7단계 - btnSendMail에서 아래 기능을 작성합니다.
@IBAction func btnSendMail(_ sender:Any) { if MFMailComposeViewController.canSendMail() { let mail =MFMailComposeViewController() mail.setToRecipients(["[email protected]"]) mail.setSubject("GREETING") 메일 .setMessageBody("튜토리얼 포인트에 오신 것을 환영합니다!", isHTML:true) mail.mailComposeDelegate =self // 첨부 파일 추가 if let filePath =Bundle.main.path(forResource:"sampleData", ofType:"json") { if let data =NSData(contentsOfFile:filePath) { mail.addAttachmentData(data as Data, mimeType:"application/json" , fileName:"sampleData.json") } } present(mail, animated:true) } else { print("이메일은 전송") }}
그리고 완료되었습니다!!
그러나 메시지 전송, 취소 또는 실패와 같은 다른 조건도 처리해야 합니다. 이를 위해 우리는 위의 프로토콜을 준수했습니다.
대리자 메서드를 구현해 보겠습니다.
func mailComposeController(_ controller:MFMailComposeViewController, didFinishWith result:MFMailComposeResult, error:Error?) { if let _ =error { self.dismiss(animated:true, completion:nil) } switch result { case .cancelled:print( "Cancelled") break case .sent:print("Mail sent successful") break case .failed:print("Sending mail failed") break default:break } controller.dismiss(animated:true, completion:nil)}사전>그리고 완료되었습니다!!
실제 기기에서 프로그램 실행,
완전한 코드
UIKitimport MessageUIclass ViewController 가져오기:UIViewController, MFMailComposeViewControllerDelegate { 재정의 func viewDidLoad() { } @IBAction func btnSendMail(_ sender:Any) { if MFMailComposeViewController.canSendMail() { let mail =MFMailComposeViewController() mail.setToReci" @gmail.com"]) mail.setSubject("GREETING") mail.setMessageBody("튜토리얼 포인트에 오신 것을 환영합니다!", isHTML:true) mail.mailComposeDelegate =self if let filePath =Bundle.main.path(forResource:"sampleData ", ofType:"json") { if let data =NSData(contentsOfFile:filePath) { mail.addAttachmentData(data as Data, mimeType:"application/json" , fileName:"sampleData.json") } } 현재(메일, 애니메이션:true) } else { print("이메일을 보낼 수 없습니다.") } } func mailComposeController(_ 컨트롤러:MFMailComposeViewController, didFinishWith 결과:MFMailComposeResu lt, error:Error?) { if let _ =error { self.dismiss(animated:true, completion:nil) } switch result { case .cancelled:print("Cancelled") break case .sent:print("메일을 보냈습니다. 성공적으로") break case .failed:print("메일 보내기 실패") break default:break } controller.dismiss(animated:true, completion:nil) }}