2015-11-05 5 views
0

Я пробовал 2 кода с разных сайтов до , отправил электронное письмо с моего приложения iOS. При нажатии на кнопку Отправить он вызывает метод mailComposeController и всегда возвращает меня в журнале «Письма, отправленные» как результат параметр всегда MFMailComposeResultSent.value, даже когда у меня есть картинки 5S в самолете режим.Пробовал отправлять электронную почту со своего приложения и не работает - Swift (iOS)

Кроме того, даже если у меня есть подключение к Интернету, Я никогда не получаю электронное письмо. Уже проверял СПАМ и другие папки и ждал один целый день, если он был задержан, но никогда не получал даже попытки несколько раз.

Я программирую с помощью Swift и использую XCode 6.4 в сетчатке Macbook Pro с середины 2014 года с Yosemite 10.10.5.

Здесь Свифт код:

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 = ["[email protected]"] 

      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) 

    } 
} 

Большое спасибо за вашу помощь заранее.

ответ

1

для меня следующий код работает прекрасно:

import UIKit 
import MessageUI 

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 
    override func viewDidLoad() { 
    super.viewDidLoad() 

    if MFMailComposeViewController.canSendMail() { 
     let toRecipents = ["[email protected]"] 
     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) 
    } 
} 
+0

btw: Вы тестируете в тренажере или на реальном устройстве? –

+0

Я тестирую свое настоящее устройство iPhone 5S. – oscar

+0

Вы получили в своем электронном почтовом ящике сообщение, отправленное? (в введенном вами коде есть мой адрес электронной почты). – oscar

0

Благодаря Андре Slotta я решил мою проблему.

Проблема была в том, что я не включил переключатель «Почта» в настройках> Почта, Контакты, Календарь> myemailaccount.

Это позволяет отправлять и получать электронные письма из родного приложения iOS. Вместо этого я просто включил эту функцию для «Контакты», «Календари» и «Заметки» и использовал приложение iOS Gmail для целей электронной почты в своем iPhone.

Он также работал с моим начальным кодом, так что это не проблема кода, и каждый может попробовать мой начальный код в Swift (не Swift2).

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

0

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