【问题标题】:How to send an email without opening the mail composer iOS swift?如何在不打开邮件编写器 iOS swift 的情况下发送电子邮件?
【发布时间】: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


【解决方案1】:

Apple 不允许您在不向用户显示邮件编辑器窗口的情况下从用户帐户发送电子邮件(出于安全原因)。如果您需要,您必须从您的服务器实现自己的邮件发送机制(并且仍然将无法从用户的帐户发送电子邮件。)

并不是说“苹果没有这个功能”。那将是一个巨大的安全漏洞。 Apple 明确阻止第三方从用户帐户发送电子邮件,除非使用邮件编辑器,并且绝不允许

考虑一下如果允许的话,滥用的可能性。垃圾邮件发送者可以免费发布像“flappy bird”这样的“特洛伊木马”应用程序:一个有趣、流行的游戏。数以百万计的人下载它。在他们不知情的情况下,它开始从他们的帐户发送电子邮件,试图欺骗他们的朋友或整个在线社区

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2012-02-04
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多