Попытка отправить электронную почту из приложения и не работает - Swift (iOS)
Я попробовал 2 кода с разных сайтов, чтобы отправить письмо из моего приложения для iOS. Когда я нажимаю кнопку " Отправить", он вызывает метод mailComposeController и всегда возвращает мне журнал "Почта отправлена", поскольку в качестве параметра результата всегда используется MFMailComposeResultSent.value, даже если у меня iPhone 5S в режиме полета.
Кроме того, даже когда у меня есть подключение к интернету, я никогда не получаю электронное письмо. Уже проверил СПАМ и другие папки и ждал целый день, если это было отложено, но никогда не получалось, даже пытаясь несколько раз.
Я программирую со Swift и использую XCode 6.4 в сетчатке Macbook Pro с середины 2014 года с Yosemite 10.10.5.
Вот код Swift:
import UIKit
import MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if (MFMailComposeViewController.canSendMail()) {
var emailTitle = "Vea Software Feedback"
var messageBody = "Vea Software! :)"
var toRecipents = ["oscar.muntal@gmail.com"]
var mc: MFMailComposeViewController = MFMailComposeViewController()
mc.mailComposeDelegate = self
mc.setSubject(emailTitle)
mc.setMessageBody(messageBody, isHTML: false)
mc.setToRecipients(toRecipents)
self.presentViewController(mc, animated: true, completion: nil)
}else {
println("No email account found")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Email Delegate
func mailComposeController(controller:MFMailComposeViewController, didFinishWithResult result:MFMailComposeResult, error:NSError) {
switch result.value {
case MFMailComposeResultCancelled.value:
println("Mail cancelled")
case MFMailComposeResultSaved.value:
println("Mail saved")
case MFMailComposeResultSent.value:
println("Mail sent")
case MFMailComposeResultFailed.value:
println("Mail sent failure: \(error.localizedDescription)")
default:
break
}
self.dismissViewControllerAnimated(false, completion: nil)
}
}
Большое спасибо за вашу помощь заранее.
3 ответа
Для меня следующий код работает отлично:
import UIKit
import MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if MFMailComposeViewController.canSendMail() {
let toRecipents = ["oscar.muntal@gmail.com"]
let emailTitle = "Vea Software Feedback"
let messageBody = "Vea Software! :)"
let mc: MFMailComposeViewController = MFMailComposeViewController()
mc.mailComposeDelegate = self
mc.setToRecipients(toRecipents)
mc.setSubject(emailTitle)
mc.setMessageBody(messageBody, isHTML: false)
presentViewController(mc, animated: true, completion: nil)
} else {
print("cannot send mails")
}
}
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
switch result {
case MFMailComposeResultCancelled:
print("Mail cancelled")
case MFMailComposeResultSaved:
print("Mail saved")
case MFMailComposeResultSent:
print("Mail sent")
case MFMailComposeResultFailed:
print("Mail sent failure: \(error?.localizedDescription)")
default:
break
}
dismissViewControllerAnimated(true, completion: nil)
}
}
Благодаря Андре Слотте я решил свою проблему.
Проблема заключалась в том, что я не включил переключатель "Почта" в меню "Настройки"> "Mail, Контакты, Календарь"> "myemailaccount".
Это позволяет отправлять и получать электронные письма из собственного приложения iOS. Вместо этого я просто включил эту функцию для "Контакты", "Календари" и "Заметки" и использую приложение Gmail для iOS в целях электронной почты на моем iPhone.
Он также работал с моим исходным кодом, так что это не было проблемой кода, и каждый может попробовать мой исходный код в Swift (не Swift2).
Еще раз спасибо Андре Слотта за вашу помощь!!!
Пожалуйста, добавьте свою учетную запись электронной почты в настройках вашего мобильного телефона!