###前提・実現したいこと
swiftで日記アプリを作っています。
実現したいことはアプリ内で生成したPDFデータをアプリ内のメーラーから送信できるようにすることです。
###発生している問題・エラーメッセージ
MFMailComposeViewController()で実装し、自分のgmail宛に送ってみるのですが届きません。
そこでデフォルトの「メール」アプリを開いてみると未送信メールを送信中となり、数秒でgmailに送信されます。
どのようにすれば、アプリ内で送信を完了することができるのでしょうか。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
Kenterouさんとの質疑応答のやりとりを読ませて頂いて思ったんですが、実際にはgmailのサーバーまで送信できているけど、送信したメールを確認するために使っている標準のメールアプリがメールを端末に取り込むのが遅いだけという話ではないでしょうか?
http://www.ipodwave.com/iphone/howto/iphone-mail-gmail.html
に書かれている通り、Gmailを標準のメールアプリで受け取る場合、メールアプリを起動してないとフェッチ機能で15分に1回しか新着メールの確認をしません。
メールの確認は、上記Webページの後半に紹介されている公式Gmailアプリを使うか、
パソコンのブラウザでhttps://mail.google.com/にアクセスして確認することをお勧めします。
投稿2016/03/20 14:22
総合スコア6299
0
ベストアンサー
同じ様な状態になるように簡単なサンプルを作ってみました。
自分の場合はBundleから読み込んだPDFを添付して、Gmailにて送信しましたが直ちに送信されました。
メール送信時に呼ばれるハンドラで何かエラーが出ていないか確認してみるくらいしか分かりませんが、、、
参考になれば幸いです。
swift
1import UIKit 2import MessageUI 3 4class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 } 10 11 @IBAction func openMail(sender: UIButton) { 12 13 // check if can send an email 14 if MFMailComposeViewController.canSendMail() == false { 15 print("Email Send Failed") 16 return 17 } 18 19 let mailViewController = MFMailComposeViewController() 20 mailViewController.mailComposeDelegate = self 21 22 mailViewController.setSubject("件名") 23 24 let toRecipients = ["sample@gmail.com"] 25 mailViewController.setToRecipients(toRecipients) 26 27 // BundleからPDFを読み込んで添付 28 let bundle = NSBundle.mainBundle().pathForResource("sample", ofType: "pdf") 29 let date = NSData(contentsOfFile: bundle!) 30 mailViewController.addAttachmentData(date!, mimeType: "application/pdf", fileName: "sample.pdf") 31 32 self.presentViewController(mailViewController, animated: true, completion: nil) 33 } 34 35 func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 36 37 switch result.rawValue { 38 case MFMailComposeResultCancelled.rawValue: 39 print("Email Send Cancelled") 40 break 41 case MFMailComposeResultSaved.rawValue: 42 print("Email Saved as a Draft") 43 break 44 case MFMailComposeResultSent.rawValue: 45 print("Email Sent Successfully") 46 break 47 case MFMailComposeResultFailed.rawValue: 48 print("Email Send Failed") 49 break 50 default: 51 break 52 } 53 dismissViewControllerAnimated(true, completion: nil) 54 } 55}
投稿2016/03/20 12:01
総合スコア8490
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/20 13:11 編集
2016/03/20 13:11
2016/03/20 13:17
2016/03/20 13:19
2016/03/20 13:23
2016/03/20 13:26
2016/03/20 13:39
2016/03/20 13:49
2016/03/20 14:14
2016/03/20 14:17
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/20 14:33
2016/03/20 15:34 編集
2016/03/21 01:14 編集
2016/03/21 01:15 編集