iOS 이메일 전송 및 Callback


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    // SendEmail
    @objc func StartSendEmail ()
    {
        print("===== ViewCon_Settings StartSendEmail (이메일 발송)")
        
        // 메일 전송 가능 여부 확인
        guard
            MFMailComposeViewController.canSendMail() == true
            else
        {
            // 메일 전송 불가
            print("===== Mail services are not available (메일 전송 불가)")
            
            EterisCommonAlert.StartConfirmOnlyAlert(viewController: self, title: "메일 전송 불가", message: "Apple 메일 설정이 되어있지 않아 전송이 불가능합니다.\n")
            
            return
        }
        
        // 메일 전송 가능
        let mailVC = MFMailComposeViewController()
        mailVC.mailComposeDelegate = self as? MFMailComposeViewControllerDelegate
        
        // Configure the fields of the interface.
        mailVC.setToRecipients(["koreplaceapp@gmail.com"])
        mailVC.setSubject("KOReplace 대체 물품 정보 추가")
        mailVC.setMessageBody("BODY", isHTML: false)
        
        self.present(mailVC, animated: true)
    }
}
 
// MARK: - MFMailComposeViewControllerDelegate
extension ViewCon_Settings : MFMailComposeViewControllerDelegate
{
    // 메일 전송 혹은 실패
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        
        print("===== ViewCon_Settings mailComposeController - didFinishWith (이메일 전송 결과)")
        
        dismiss(animated: true, completion: nil)
        
        switch result
        {
        case .sent:
            print("===== ViewCon_Settings mailComposeController - didFinishWith (이메일 전송 결과 - 전송됨)")
            EterisCommonAlert.StartConfirmOnlyAlert(viewController: self, title: "메일 전송 완료", message: "감사합니다.\n전달해주신 자료는 직접 확인하여 최대한 빨리 데이터베이스에 반영하겠습니다.")
        case .saved:
            print("===== ViewCon_Settings mailComposeController - didFinishWith (이메일 전송 결과 - 저장됨)")
        case .cancelled:
            print("===== ViewCon_Settings mailComposeController - didFinishWith (이메일 전송 결과 - 취소됨)")
        case  .failed:
            print("===== ViewCon_Settings mailComposeController - didFinishWith (이메일 전송 결과 - 전송실패됨)")
            EterisCommonAlert.StartConfirmOnlyAlert(viewController: self, title: "메일 전송 실패", message: "메일 전송에 실패하였습니다.")
        }
    }
}
cs


이메일 전송은 애플의 '메일' 앱 설정이 되어 있지 않을 경우 전송이 불가능하다.


해당 부분에서의 처리가 필요하다.

'Developer > Swift' 카테고리의 다른 글

iOS 이메일 전송 및 Callback  (0) 2019.11.06
addTarget in UILabel  (0) 2019.10.06
viewWillAppear, viewDidAppear 에서 1번만 실행하기  (0) 2019.09.29
guard  (0) 2019.09.29
AlamofireImage - af_image  (0) 2019.09.29
AutoLayout에 대해 조금 더 알아보자 (with ScrollView)  (0) 2019.07.23

이 글을 공유하기


댓글(0)

Designed by CMSFactory.NET