【问题标题】:MFMailComposeViewController error [MC] Filtering mail sheet accounts for bundle IDMFMailComposeViewController 错误 [MC] 为捆绑 ID 过滤邮件表帐户
【发布时间】:2016-11-15 11:28:44
【问题描述】:

我使用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 过滤邮件表帐户:[My Bundle ID],源帐户管理:1

[MC] 结果:否

请帮忙。

【问题讨论】:

  • 我也有同样的问题!我已经在模拟器中尝试过,它在 ios 9 中有效,但在 ios 10 中无效。
  • 有这个问题的解决方案??
  • 仍在寻找解决方案:(
  • 七个答案,没有一个是正确的。

标签: swift ios10 mfmailcomposeviewcontroller


【解决方案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)

【讨论】:

    【解决方案3】:

    遇到了同样的问题。 它与presenter相关。

    您需要从 UINavigationController 呈现 MFMailComposeViewController。 试试这个:

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

    它解决了我的问题。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        您需要登录“邮件”应用程序才能展示邮件编辑器。

        【讨论】:

          【解决方案6】:

          对我来说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)
          

          【讨论】:

            【解决方案7】:
            @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,然后才能使用该程序。 别忘了用真机试试这个

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-09-20
              • 1970-01-01
              • 1970-01-01
              • 2011-07-29
              • 1970-01-01
              • 2011-05-16
              • 2013-06-24
              相关资源
              最近更新 更多