代表用户从 GCE 或 AWS 发送电子邮件

Sending email from GCE or AWS on behalf of users

我如何使用 Google Compute Engine(或类似服务,如 AWS)通过 SMTP 服务器代表用户发送电子邮件?

我有兴趣构建一个在线电子邮件客户端,它允许用户输入他们的 SMTP 和 POP 服务器以及 send/receive 电子邮件,就像他们使用桌面客户​​端一样。 GCE blocks 所有 SMTP 端口以防止滥用并建议改用 SendGrid 等邮件服务。然而,在研究了数十种这些服务之后,他们似乎都只支持使用自己的 SMTP 服务器或可能是预先清除的 smtp 服务器的交易电子邮件。我只是想使用 用户的 SMTP 服务器 (ex smtp.mail.yahoo.com) 发送电子邮件,就像他们使用桌面时一样客户.

我知道我可以托管自己的服务器,但我对维护基础设施不感兴趣。我想在云服务上托管所有内容。有什么方法可以解决 Google 对现有服务的限制?

我相信您已经知道,您必须让用户输入他们的 SMTP 服务器信息和帐户凭据。然后您将使用该信息连接到他们的 SMTP 服务器。

默认情况下,AWS EC2 实例对端口 25 上的 SMTP 流量进行速率限制。要取消此限制,您需要填写并提交以下表格: https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

如果您希望以 Gmail, Hotmail, or Yahoo 用户的身份发送邮件,您可能需要调用该服务的 API 让服务器代表用户发送邮件。这样做有几个好处:

  1. 您需要获得用户的授权(通常通过 OAuth 流程) 为了访问他们的邮件。这意味着用户不应该 对您从他们的帐户发送邮件感到惊讶,他们会 对您的访问有一定的控制权。
  2. 邮件将被签名并来自适当的 IP 地址 遵守那些建立的各种垃圾邮件控制机制 公司。没有这个,你发送的邮件很可能会结束 在收件人的位桶中。
  3. 通过使用 API,该服务应该能够保留 在用户的外发邮件文件夹中发送邮件。这会让用户 如果需要,查看并搜索发送的原始邮件。

不幸的是,这也可能意味着您要发送的每个邮件服务都需要单独集成,并且您可能无法从较小的提供商处作为用户的电子邮件地址发送。

请注意,App Engine mail API 允许您以当前登录用户的身份发送邮件(登录时,用户会看到与上述 OAuth 过程类似的同意屏幕)。