MFMailComposeViewController发送和取消都不起作用

问题描述 投票:0回答:1

MFMailComposeViewController.canSendMail()为true,gmail屏幕显示正确的收件人电子邮件ID,主题和正文。但是发送按钮被禁用。此外,当我按下取消按钮滑块时,会出现两个选项:删除和取消。删除不起作用,我无法从邮件编辑器返回到我以前的控制器。

Gmail已在我的iphone上设置并且运行正常。我无法弄清楚出了什么问题,有人可以帮忙吗?

MFMailComposeViewController.canSendMail() {
    if (selectedEntry!.notifyType == "Email") {
        let mailComposeVC = MFMailComposeViewController()
        mailComposeVC.mailComposeDelegate = self
        let target:String = (selectedEntry?.targetString)!
        mailComposeVC.setToRecipients([target])
        mailComposeVC.setSubject("Test")
        mailComposeVC.setMessageBody("Hello ", isHTML: false)
        // present the message view controller
        self.present(mailComposeVC, animated: true, completion: nil)
    }
} else {
    print("MAIL services are not available")
    return
}



func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?)
{
    switch (result)
    {
    case .sent:
        print("email sent.")
        break
    case .cancelled:
        print("email cancelled.")
        break
    case .failed:
        print("failed sending email")
        break
    default:
        break
    }
    controller.dismiss(animated: true, completion: nil)
}  
swift mfmailcomposeviewcontroller
1个回答
0
投票

不幸的是,MFMailComposeViewController由本机邮件应用程序提供支持。取自Apple documentation

如果用户选择发送消息,则消息将在用户的“邮件”应用程序发件箱中排队。 Mail应用程序最终负责发送消息。

由于设备上已设置Gmail帐户,因此即使邮件应用程序已从设备“卸载”,canSendMail也会返回true。该应用程序并未真正卸载,但已隐藏。如果您尝试以下列方式检查应用程序是否存在,则会出现误报。

let mailURL = URL(string: "mailto:?to=\(emailAddress)")!
let canSendEmail = UIApplication.shared.canOpenURL(mailURL)

使用UIApplication.shared.open(mailURL)打开经过验证的网址会显示一条警告,询问您是否要重新安装该应用。

Restore "Mail"? alert

根据this response,此问题仅存在于iOS 12或更新版本中。

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