MFMailComposeViewController错误[MC]过滤包ID的邮件表帐户

时间:2016-11-15 11:28:45

标签: swift ios10 mfmailcomposeviewcontroller

我执行使用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]结果:否

请帮助。

7 个答案:

答案 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。