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

问题描述 投票:9回答:7

我执行使用MFMailComposeViewController发送消息的标准功能。

我的代码:

if MFMailComposeViewController.canSendMail()
{
    let mail = MFMailComposeViewController()
    mail.mailComposeDelegate = self
    mail.setToRecipients(["[email protected]"])
    mail.setSubject("Subject")
    mail.setMessageBody("Some Text", isHTML: false)
    self.presentViewController(mail, animated: true, completion: nil)
}

控制器无法打开,我在控制台中看到一条从未见过的消息。

[MC]过滤捆绑包ID的邮件表帐户:[我的捆绑ID],源帐户管理:1

[MC]结果:没有

请帮忙。

swift ios10 mfmailcomposeviewcontroller
7个回答
3
投票

如果在您尝试测试应用程序的设备上设置了邮件帐户,则没有问题。请创建一个邮件帐户。


2
投票

适用于Swift 3.0.1 - 4.2兼容

if MFMailComposeViewController.canSendMail()
{
    let mail = MFMailComposeViewController()
    mail.mailComposeDelegate = self
    mail.setToRecipients(["[email protected]"])
    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)

1
投票

有同样的问题。它与演示者有关。

您需要从UINavigationController提供MFMailComposeViewController。试试这个:

self.navigationController.presentViewController(mail, animated: true, completion: nil)

它解决了我的问题。


1
投票

如果检查MFMailComposeViewController.canSendMail()的值,您将看到它为false。这样你的if语句中的代码就不会被执行了。要返回true,您需要在手机上启用一封电子邮件。


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)

0
投票
@IBAction func gmailButton(_ sender: UIButton){
    self.popUp()
}

func popUp(){
    guard MFMailComposeViewController.canSendMail() else {
        return
    }

    let composer = MFMailComposeViewController()
    composer.mailComposeDelegate = self
    composer.setToRecipients(["[email protected]"])
    composer.setSubject("succes")
    composer.setMessageBody("succes sent", isHTML: false)
    present(composer, animated: true)
}

首先,您必须登录Gmail,然后才能使用此程序。不要忘记使用真实的设备来试试这个


0
投票

您需要登录“Mail”应用程序才能展示Mail Composer。

© www.soinside.com 2019 - 2024. All rights reserved.