Найти строку в сообщении тела MFMailComposeViewController - PullRequest
0 голосов
/ 04 июля 2019

Я реализовал стандартный способ предоставления пользователю обратной связи. Есть ли способ поиска по почтовому сообщению (или теме), когда пользователь нажимает на кнопку отправки или отмены в контроллере просмотра почты. Приложение должно выполнить действие, если письмо содержит определенную строку. В этом случае письмо не нужно отправлять. Спасибо

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 Ответ

1 голос
/ 04 июля 2019

Нет общедоступного API, который позволял бы вам читать содержимое темы или тела письма пользователя.Протокол MFMailComposeViewControllerDelegate только уведомляет вас, если пользователь отправил электронное письмо или решил отменить его.

Согласно документации здесь , вы можете настроить поля электронной почты, прежде чем представлять ее пользователю, ноих можно изменить.

Перед представлением интерфейса заполните поля начальными значениями для темы, получателей электронной почты, основного текста и вложений электронной почты.После представления интерфейса пользователь может отредактировать ваши начальные значения перед отправкой электронного письма.

, а также говорит, что пользователь должен утвердить содержимое электронного письма и все, что там отправлено в почтовое приложение.когда пользователь нажимает кнопку отправить.

Композиция интерфейса не гарантирует доставку вашего сообщения электронной почты;он позволяет только создать исходное сообщение и представить его на утверждение пользователя.... Если пользователь решает отправить сообщение, оно помещается в очередь в папке «Исходящие» почтового приложения пользователя.Почтовое приложение несет полную ответственность за отправку сообщения.

...