在MFMailComposeViewController的messageBody中查找字符串

时间:2019-07-04 07:45:53

标签: ios swift xcode mfmailcomposer

我已经为用户提供了一种提供反馈的标准方法。 当用户在邮件视图控制器中点击“发送”或“取消”时,是否可以搜索邮件的消息(或主题)。 如果邮件中包含特定字符串,则应用程序应执行操作。在这种情况下,无需发送邮件。谢谢

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

1 个答案:

答案 0 :(得分:1)

没有可用的公共API,您可以通过该API阅读用户电子邮件主题或正文的内容。 MFMailComposeViewControllerDelegate协议仅在用户确实发送电子邮件或决定取消时通知您。

根据文档here,您可以自定义电子邮件的字段,然后再显示给用户,但可以更改。

  

在显示界面之前,请使用初始字段填充字段   主题,电子邮件收件人,正文和附件的值   电子邮件。展示界面后,用户可以编辑您的   发送电子邮件之前的初始值。

并且还说用户需要批准电子邮件的内容,并且当用户点击“发送”时,任何内容都会发送到邮件应用。

  

撰写界面不能保证您的交付   电子邮件;它只允许您构造初始消息,并且   展示给用户批准。 ...如果用户选择发送邮件,则该邮件会在用户的“邮件”应用发件箱中排队。邮件应用最终负责发送邮件。