【发布时间】:2021-10-08 16:16:48
【问题描述】:
我正在处理 iOS swift 项目。我想用应用程序本身发送邮件。当用户点击应用程序内的提交按钮时,需要在后台发送的邮件或弹出消息将显示在应用程序内,而无需导航到邮件编写器。
if MFMailComposeViewController.canSendMail() {
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients([ApplicationModel.sharedInstance.mailAddress])
mail.setSubject("Feedback: \(UserDefaults.Id)")
mail.setMessageBody(sendBpodyMessage(), isHTML: false)
present(mail, animated: true)
} else {
if let emailUrl = createEmailUrl(to: ApplicationModel.sharedInstance.mailAddress,
subject: "Feedback", body: sendBpodyMessage()) {
UIApplication.shared.open(emailUrl)
}
}
我参考了很多答案,所有人都说没有办法,苹果没有这个功能。有没有可能或任何其他方式伙计们?
他们中的大多数人说使用 API 发送到自己的服务器。如果我没有与上述问题相关的任何选项,我会尝试一下。
【问题讨论】:
-
是的,您应该使用您的 API 从服务器发送电子邮件
-
谢谢@MoayadAlkouz。这是在不打开邮件编辑器的情况下发送邮件的唯一方法吗?
-
Apple 不允许您在不向用户显示邮件编辑器窗口的情况下从用户帐户发送电子邮件(出于安全原因)。想要这个(并且仍然无法从用户的帐户发送电子邮件。)
-
再次强调,并不是“苹果没有这个功能”。那将是一个巨大的安全漏洞。 Apple 明确阻止第三方从用户帐户发送电子邮件,除非使用邮件编辑器,并且绝不允许。
-
如果您想发送一封包含您生成的消息(不是用户)的电子邮件,并且您想使用自己的电子邮件(不是用户的电子邮件帐户),那么您可以使用任何处理通过 smtp 协议发送电子邮件来做到这一点。但是,您需要在自己的电子邮件帐户中包含 smtp 密码,您将在应用程序中使用该密码,这不是最佳解决方案(因为有人可以找到它并访问您的电子邮件帐户)。
标签: ios swift email mfmailcomposeviewcontroller