我已经为用户提供了一种提供反馈的标准方法。 当用户在邮件视图控制器中点击“发送”或“取消”时,是否可以搜索邮件的消息(或主题)。 如果邮件中包含特定字符串,则应用程序应执行操作。在这种情况下,无需发送邮件。谢谢
extension AboutViewController: MFMailComposeViewControllerDelegate {
// MARK: E-Mail
func configureMailComposerViewController() -> MFMailComposeViewController {
let mailComposerVC = MFMailComposeViewController()
mailComposerVC.mailComposeDelegate = self
mailComposerVC.setToRecipients(["support@myapp.app"])
let prefix = NSLocalizedString("Feedback", comment: "")
let title = "\(prefix) - myApp v. \(dataModel.appVersion) / iOS \(UIDevice.current.systemVersion) / \(UIDevice.current.deviceModel())"
mailComposerVC.setSubject(title)
let localisedGreeting = NSLocalizedString("Hi", comment: "")
let localisedMessage = NSLocalizedString("I would like to share the following feedback: ", comment: "")
mailComposerVC.setMessageBody("""
\(localisedGreeting),
\(localisedMessage)
""",
isHTML: false)
return mailComposerVC
}
func showSendMailErrorAlert() {
let sendMailErrorAlert = UIAlertController(title: NSLocalizedString("Mail could not be sent", comment: ""),
message: NSLocalizedString("Please check the email configuration in the device settings and try again.", comment: ""),
preferredStyle: .alert)
sendMailErrorAlert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
present(sendMailErrorAlert, animated: true, completion: nil)
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
// Can I get to the message here? I can't find the property of the controller.
dismiss(animated: true, completion: nil)
}
答案 0 :(得分:1)
没有可用的公共API,您可以通过该API阅读用户电子邮件主题或正文的内容。 MFMailComposeViewControllerDelegate协议仅在用户确实发送电子邮件或决定取消时通知您。
根据文档here,您可以自定义电子邮件的字段,然后再显示给用户,但可以更改。
在显示界面之前,请使用初始字段填充字段 主题,电子邮件收件人,正文和附件的值 电子邮件。展示界面后,用户可以编辑您的 发送电子邮件之前的初始值。
并且还说用户需要批准电子邮件的内容,并且当用户点击“发送”时,任何内容都会发送到邮件应用。
撰写界面不能保证您的交付 电子邮件;它只允许您构造初始消息,并且 展示给用户批准。 ...如果用户选择发送邮件,则该邮件会在用户的“邮件”应用发件箱中排队。邮件应用最终负责发送邮件。