gpt4 book ai didi

swift - MFMailComposeViewController 发送和取消都不起作用

转载 作者:行者123 更新时间:2023-11-30 11:36:59 28 4
gpt4 key购买 nike

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

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)
}

最佳答案

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

If the user opts to send the message, the message is queued in the user’s Mail app outbox. The Mail app is ultimately responsible for sending the message.

由于设备上设置了 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 或更高版本中。

关于swift - MFMailComposeViewController 发送和取消都不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642356/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com