Попытка отправить электронную почту из приложения и не работает - 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).

Еще раз спасибо Андре Слотта за вашу помощь!!!

Пожалуйста, добавьте свою учетную запись электронной почты в настройках вашего мобильного телефона!

Другие вопросы по тегам