Несколько незначительных изменений, которые я выделю в комментариях:
import UIKit
import MessageUI
class MyViewController: UIViewController {
// MARK: - Properties
let composeViewController = MFMailComposeViewController()
// MARK: - Actions
@IBAction func didTapSendInEmailButton() {
composeViewController.mailComposeDelegate = self
// Entered a generic email in place of your constant value
composeViewController.setToRecipients(["someone@example.com"])
// Entered a generic subject in place of your constant value
composeViewController.setSubject("subject")
// You have a typo on "Constants" here
composeViewController.setMessageBody("body", isHTML: false)
present(composeViewController, animated: true, completion: nil)
}
}
// MARK: - MFMailComposeViewControllerDelegate
extension MyViewController: MFMailComposeViewControllerDelegate {
// Removed the private
func mailComposeController(_ controller: MFMailComposeViewController,
didFinishWith result: MFMailComposeResult,
error: Error?) {
switch result {
case .sent:
print("Email sent")
case .saved:
print("Draft saved")
case .cancelled:
print("Email cancelled")
case .failed:
print("Email failed")
}
controller.dismiss(animated: true, completion: nil)
}
}
И мой журнал консоли показывает электронное письмо отправлено .
Подтвердили ли вы, что ваш объект Константысодержит действительные данные?Возможно, вам следует распечатать его или просмотреть в точке останова, когда он прибудет сюда, чтобы убедиться в отсутствии проблем с его содержимым.
Кроме того, убедитесь, что на первом устройстве в вашем устройстве установлена действующая учетная запись электронной почты.место, чтобы отправить письмо для вас.Если это устройство разработки, то оно может быть сброшено и в какой-то момент потеряно.
Сравнение типа ошибки в вашем:
Для моего:
Обратите внимание, что цвет Error
меняется.Это означает, что он использует определенную вами ошибку, которая относится к частной.Вы должны сломать это, переименовав свою ошибку в другое.Как только это будет сделано, это должно исправить вашу ошибку.