2015-03-10 3 views
40

как бы вы отправили письмо с быстрым в приложении. Например, например, ваш пользователь хочет сбросить свой пароль в приложении для социальных сетей с помощью Parse (или нет), но вы не хотите использовать MessageUI, потому что хотите, чтобы он был автоматическим. Я провел некоторое исследование и выяснил, что это возможно с помощью mailgun, но я не могу понять, как его использовать с быстрым и XCode 6. Не могли бы вы помочь мне?Отправка электронной почты с помощью Swift

+0

Что вы пробовали? – Loko

ответ

86

Уверенный, вы можете.

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) 

    } 
} 

Источник Andrew Bancroft

+9

из вопроса: «но вы не хотите использовать MessageUI, потому что хотите, чтобы он был автоматическим» –

+0

при использовании В симуляторе IOS9.2 сбой представления с сообщением «viewServiceDidTerminateWithError». Однако в других вопросах указано, что это проблема только с симулятором, и решение будет работать на реальных устройствах. – Dashrath

+6

Выглядит _very_ знакомый https://www.andrewcbancroft.com/2014/08/25/send-email-in-app-using-mfmailcomposeviewcontroller- with-swift/ – n13

6

Анализировать поддерживает Mailgun и Mandrill из коробки. См. Их documentation

Вам нужно будет написать функцию CloudCode, а затем вызвать ее из приложения.

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

Примеры фрагментов кода для отправки почты с использованием 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"); 
    } 
}); 
+0

Есть ли модуль, который мне нужно импортировать? он дает мне ошибки –

+0

var Mailgun = require ('mailgun'); – picciano

+0

У меня есть тот же код, и я все еще получаю ошибки также в swift вы должны использовать «» для строки вместо « –