web-dev-qa-db-fra.com

Envoi de courrier électronique avec Swift

comment voulez-vous envoyer un email avec Swift dans une application. Par exemple, votre utilisateur souhaite réinitialiser son mot de passe dans une application de média social avec Parse (ou non), mais vous ne voulez pas N'utilisez pas MessageUI parce que vous voulez que ce soit automatique. J'ai fait quelques recherches et découvert que cela peut être possible avec mailgun mais je n'arrive pas à comprendre comment l'utiliser avec Swift et XCode 6. Pouvez-vous m'aider s'il vous plaît?

40
Noah Barsky

Sûr que vous pouvez.

import Foundation
import UIKit
import MessageUI

class ViewController: ViewController,MFMailComposeViewControllerDelegate {

    @IBAction func sendEmailButtonTapped(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 sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail.  Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK")
        sendMailErrorAlert.show()
    }

    // MARK: MFMailComposeViewControllerDelegate

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

    }
}

Source Andrew Bancroft

86
Mohammad Nurdin

Parse prend en charge Mailgun et Mandrill prêts à l'emploi. Voir leur documentation

Vous devrez écrire une fonction CloudCode, puis l'appeler depuis votre application.

PFCloud.callFunctionInBackground("hello", withParameters:[:]) {
  (result: AnyObject!, error: NSError!) -> Void in
  if error == nil {
    // result is "Hello world!"
  }
}

Exemple de fragments de code pour envoyer des messages à l'aide de Mailgun.

var Mailgun = require('mailgun');
Mailgun.initialize('myDomainName', 'myAPIKey');

Mailgun.sendEmail({
  to: "[email protected]",
  from: "[email protected]",
  subject: "Hello from Cloud Code!",
  text: "Using Parse and Mailgun is great!"
}, {
  success: function(httpResponse) {
    console.log(httpResponse);
    response.success("Email sent!");
  },
  error: function(httpResponse) {
    console.error(httpResponse);
    response.error("Uh oh, something went wrong");
  }
});
6
picciano