在自己的应用程序而不是邮件应用程序中打开邮件屏幕

Open mail screen in own app instead of mail app

我使用的是最新的 XcodeSwift 版本。

我正在使用以下代码启动屏幕以编写电子邮件:

UIApplication.shared.open(URL(string: "mailto:test@example.com")!)

此代码打开 Apple 邮件应用程序,创建一个新电子邮件并将 test@example.com 写入 To: 字段。

有时您会看到此 "write a new e-mail" window 在您启动它的应用程序中以叠加层的形式打开,而没有打开 Apple 邮件应用程序。

我怎样才能做到这一点?

如果您想从应用程序中发送电子邮件,可以查看 MFMailComposeViewController

您可以简单地实例化此视图控制器,将字段设置为主题、抄送...并呈现它。

摘自文档:

  1. 检查该服务是否可用(例如,它在模拟器中不可用)
if !MFMailComposeViewController.canSendMail() {
    print("Mail services are not available")
    return
}
  1. 实例化视图控制器,设置委托并呈现它
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self

// Configure the fields of the interface.
composeVC.setToRecipients(["address@example.com"])
composeVC.setSubject("Hello!")
composeVC.setMessageBody("Hello from California!", isHTML: false)

// Present the view controller modally.
self.present(composeVC, animated: true, completion: nil)
  1. 邮件发送或用户取消时关闭
func mailComposeController(controller: MFMailComposeViewController,
                           didFinishWithResult result: MFMailComposeResult, error: NSError?) {
    // Check the result or perform other tasks.

    // Dismiss the mail compose view controller.
    controller.dismiss(animated: true, completion: nil)
}