我执行使用MFMailComposeViewController
发送邮件的标准功能。
我的代码:
if MFMailComposeViewController.canSendMail()
{
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients(["someemail@gmail.com"])
mail.setSubject("Subject")
mail.setMessageBody("Some Text", isHTML: false)
self.presentViewController(mail, animated: true, completion: nil)
}
控制器无法打开,我在控制台中看到一条从未见过的消息。
[MC]过滤捆绑ID的邮件表帐户:[我的捆绑ID],来源帐户管理:1
[MC]结果:否
请帮助。
答案 0 :(得分:3)
如果您尝试测试应用程序的设备上设置了邮件帐户,则没有问题。请创建一个邮件帐户。
答案 1 :(得分:2)
Swift 3.0.1 - 4.2兼容
if MFMailComposeViewController.canSendMail()
{
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients(["someemail@gmail.com"])
mail.setSubject("Subject")
mail.setMessageBody("Some Text", isHTML: false)
self.present(mail, animated: true, completion: nil)
}
我遇到了同样的错误,虽然它在我的设备上完美运行 iOS 10.1.1 。 我遇到了类似的问题,发现Mail Composer只能在模拟器中使用iOS 9,iOS 10存在某种错误,并且在我的当前知识下在模拟器上运行Mail Composer。
<强>更新强> 我还使用iOS 11.4的设备对此进行了测试,结果相同。
尝试在模拟器上打开这些电话,但它们无效。虽然工作,但它们可以在真实设备上正常工作。
UIApplication.shared.keyWindow?.rootViewController?.present(mail, animated: true)
self.navigationController?.present(mail, animated: true, completion: nil)
答案 2 :(得分:1)
有同样的问题。 它与演示者有关。
您需要从UINavigationController提供MFMailComposeViewController。 试试这个:
self.navigationController.presentViewController(mail, animated: true, completion: nil)
它解决了我的问题。
答案 3 :(得分:1)
如果检查MFMailComposeViewController.canSendMail()的值,则会看到它是错误的。这样就不会执行if语句中的代码。 为了返回true,您需要在手机上启用一封电子邮件。
答案 4 :(得分:0)
对我来说this answer解决了这个问题。我在具有活动邮件帐户的真实设备上遇到了相同的问题,并将呈现视图控制器更改为
let mailComposeViewController = MFMailComposeViewController()
mailComposeViewController.mailComposeDelegate = self
mailComposeViewController.setToRecipients([address])
mailComposeViewController.setMessageBody(message, isHTML: false)
mailComposeViewController.setSubject(subject)
UIApplication.shared.keyWindow?.rootViewController?.present(mailComposeViewController, animated: true)
答案 5 :(得分:0)
@IBAction func gmailButton(_ sender: UIButton){
self.popUp()
}
func popUp(){
guard MFMailComposeViewController.canSendMail() else {
return
}
let composer = MFMailComposeViewController()
composer.mailComposeDelegate = self
composer.setToRecipients(["helpdesk@gmail.com"])
composer.setSubject("succes")
composer.setMessageBody("succes sent", isHTML: false)
present(composer, animated: true)
}
首先,您必须登录Gmail,然后才能使用此程序。 不要忘记使用真实的设备来尝试这个
答案 6 :(得分:0)
您需要登录“邮件”应用以显示Mail Composer。