2016-04-13 22 views
0

ウェブとこのサイトでコードが見つかりました。アプリでメールを送信するにはどうすればよいですか?

私は廃止された部分を更新しました。

メールは送信されたように見えますが、決して表示されません。アプリの外で何かを設定する必要があるのか​​、コードに問題がありますか?アプリケーションには、電子メールを送信するボタンが1つあります。

import Foundation 
import UIKit 
import MessageUI 

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

@IBAction func pressedSendMail(sender: AnyObject) { 
    let mailComposeViewController = configuredMailComposeViewController() 
    if MFMailComposeViewController.canSendMail() { 
     self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
    } else { 
     self.showSendMailErrorAlert() 
    } 
} 

func configuredMailComposeViewController() -> MFMailComposeViewController { 
    let mailComposerVC = MFMailComposeViewController() 
    mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property 

    mailComposerVC.setToRecipients(["[email protected]"]) 
    mailComposerVC.setSubject("Sending you an in-app e-mail...") 
    mailComposerVC.setMessageBody("Sending e-mail in-app is not so bad!", isHTML: false) 

    return mailComposerVC 
} 

func showSendMailErrorAlert() { 
    let alert = UIAlertController(title: "Could Not Send Email", 
     message: "Your device could not send e-mail. Please check e-mail configuration and try again.", 
     preferredStyle: .Alert) 
    let action = UIAlertAction(title: "OK", 
           style: .Default, 
           handler: nil) 
    alert.addAction(action) 
    presentViewController(alert, animated: true, completion: nil) 
} 

func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
    controller.dismissViewControllerAnimated(true, completion: nil) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

} 

答えて

4

電話機とカメラのアプリケーションと同様に、電子メールアプリケーションはシミュレータで開かれません。テストするには、物理​​デバイス上でテストする必要があります。あなたが私たちに与えたコードを見て、うまくいくはずです。あなたのiPhoneや他のアップルデバイスを接続して、そこで動かして動作させるだけです。

0

私は電子メールを送信していないデバイス(iPad mini)でテストしていました。私は決してこのデバイスから電子メールを送信していないことが分かります。メールが設定されていませんでした。 iPhoneはこのような状況では警告を発しますが、iPadはそうしていません。このチェックのような問題がある場合、ユーザーはデバイス上のWebブラウザだけでなく、デバイスから電子メールを送信しています。

関連する問題