gpt4 book ai didi

ios - MFMailComposeViewController 不发送电子邮件或调用委托(delegate) (MFMailComposeViewControllerDelegate)

转载 作者:可可西里 更新时间:2023-10-31 23:59:46 24 4
gpt4 key购买 nike

我有一个 MFMailComposeViewController 设置并显示如下:

class MyViewController: UIViewController {

// MARK: - Properties
let composeViewController = MFMailComposeViewController()

// MARK: - Actions
@IBAction func didTapSendInEmailButton() {
composeViewController.mailComposeDelegate = self
composeViewController.setToRecipients([Constants.contactRecipientEmail])
composeViewController.setSubject(Constants.contactSubject)
composeViewController.setMessageBody(Constans.body, isHTML: false)
present(composeViewController, animated: true, completion: nil)
}
}

// MARK: - MFMailComposeViewControllerDelegate
extension MyViewController: MFMailComposeViewControllerDelegate {
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)
}
}

我遇到了这个问题:

  1. 在编写器上按下“发送”后,不会调用 MFMailComposeViewControllerDelegate。

我可能遗漏了什么?

我无法将 mailComposeController 声明为公共(public):

enter image description here

enter image description here

最佳答案

我将在评论中强调一些小的变化:

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

我的控制台日志显示已发送电子邮件

您是否确认您的 Constants 对象包含有效数据?也许你应该打印出来或者在它到达这里时在断点处查看它以确保它的内容没有问题。

此外,请确保您首先在设备上设置了有效的电子邮件帐户,以便为您发送电子邮件。如果它是一个开发设备,那么它可能已经被重置并在某个时候丢失了。

比较你的错误类型: enter image description here

我的: enter image description here

请注意 Error 的颜色发生了变化。这意味着它正在使用您定义的错误,该错误的范围是私有(private)的。您需要通过将错误重命名为其他名称来打破这一点。完成后,它应该可以解决您的错误。

关于ios - MFMailComposeViewController 不发送电子邮件或调用委托(delegate) (MFMailComposeViewControllerDelegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50649409/

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