- iOS
-
2017-05-17 - 更新:2018-02-15
MFMailComposeViewControllerを使ってメールを作成します。
まずはMessageUIをインポートします。
1 | import MessageUI |
デリゲートを追加します。
1 | class sample: UIViewController, MFMailComposeViewControllerDelegate { |
1 | func mail(subject: String, mailbody: String) { |
2 | let composeVC = MFMailComposeViewController() |
3 | composeVC.mailComposeDelegate = self |
4 |
5 | composeVC.setToRecipients(["送信先メールアドレス"]) |
6 |
7 | composeVC.setSubject(subject) |
8 |
9 | composeVC.setMessageBody(mailbody, isHTML: false) |
10 |
11 | let layer = UIApplication.shared.keyWindow?.layer |
12 | let scale = UIScreen.main.scale |
13 | UIGraphicsBeginImageContextWithOptions((layer?.frame.size)!, false, scale) |
14 |
15 | layer?.render(in: UIGraphicsGetCurrentContext()!) |
16 | let screenshot = UIGraphicsGetImageFromCurrentImageContext() |
17 | let image = UIImageJPEGRepresentation(screenshot!, 1.0) |
18 | UIGraphicsEndImageContext() |
19 |
20 | composeVC.addAttachmentData(image!, mimeType: "image/png", fileName: "screenshot.png") |
21 |
22 | self.present(composeVC, animated: true, completion: nil) |
23 | } |
デリゲートで必要なメソッド
メール送信やキャンセルの操作を受けて実行されます。
1 | func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { |
2 | controller.dismiss(animated: true, completion: nil) |
3 |
4 | switch result { |
5 | case .sent: //送信 |
6 | break |
7 | case .saved: //保存 |
8 | break |
9 | case .failed: //失敗 |
10 | break |
11 | case .cancelled: //キャンセル |
12 | break |
13 | default: |
14 | break |
15 | } |
16 | } |
Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12
