В моем приложении пользователь может отправить электронное письмо от приложения, нажав на кнопку.Электронная почта отправлена с приложения iOS
Необходимая функция получает получателя электронной почты от объекта parse.com.
При первом вызове функции приложение выдает сообщение об ошибке: не является допустимым адресом электронной почты.
Я положил print("Email=",self.emailConsulta)
, чтобы проверить, действительно ли принятый адрес электронной почты действителен или нет, и он действителен.
Затем я закрываю письмо, и если я снова нажимаю кнопку отправки электронной почты, тогда он отлично работает, и приложение электронной почты с устройства отображает полученный адрес электронной почты в качестве получателя для сообщения электронной почты.
Вот код, я не нашел этот вопрос там, любая помощь приветствуется:
@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 query = PFQuery(className: "datos_contacto")
query.getObjectInBackgroundWithId("G5w8G3kVBG", block: {
(questionObject: PFObject?, error: NSError?) -> Void in
let direccion: AnyObject! = questionObject!.objectForKey("dato_contacto")
self.emailConsulta = direccion as! String
print("Email=",self.emailConsulta)
})
let mailComposerVC = MFMailComposeViewController()
mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property
print (emailConsulta)
mailComposerVC.setToRecipients([emailConsulta])
mailComposerVC.setSubject("Enviado desde Pedro Villarejo App Clientes (iOs)...")
mailComposerVC.setMessageBody("Escriba aqui su texto", 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)
}
Какую ошибку он бросает? – Anas
@Anas Это сообщение в консоли: недействительный адрес электронной почты. И поле получателя пуст. Затем на втором запуске все отлично работает – mvasco
Вы извлекаете адрес электронной почты из анализа в фоновом режиме. Я предполагаю, что в первый раз, когда этот запрос не завершился, пока вы не отобразите контроллер компоновщика – Paulw11