2016-04-13 7 views
0

Ich habe Code im Internet und auf dieser Website gefunden.Wie kann ich eine App eine E-Mail senden lassen?

Ich habe die veralteten Teile aktualisiert.

Die Mail scheint gesendet zu werden, erscheint aber nie. Muss etwas irgendwo außerhalb der App eingestellt werden oder ist der Code fehlerhaft? App hat eine Schaltfläche, die die E-Mail sendet.

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. 
} 

} 

Antwort

4

Ähnlich wie bei der Telefon- und Kameraanwendung wird die E-Mail-Anwendung im Simulator nicht geöffnet. Sie müssen es auf einem physischen Gerät testen, um es zu testen. Aus dem Blick auf den Code, den Sie uns gegeben haben, sollte es gut funktionieren. Schließen Sie einfach Ihr iPhone oder ein anderes Apple-Gerät an und führen Sie es dort aus, damit es funktioniert.

0

Ich habe auf einem Gerät (iPad mini) getestet, es war nicht nur nicht die E-Mail senden. Es stellte sich heraus, dass ich noch nie eine E-Mail von diesem Gerät gesendet habe. Also Mail wurde nicht eingerichtet. Das iPhone gibt in dieser Situation eine Warnung aus, die das iPad nicht tut. Wenn Sie solche Probleme haben, hat Ihr Benutzer E-Mails vom Gerät gesendet, nicht nur einen Webbrowser auf dem Gerät.

Verwandte Themen