2

如何使用 Google-App-Engine 从 Gmail 帐户发送电子邮件?发件人地址是问题所在,这是可以理解的,因为垃圾邮件的限制。(限制在这里:https ://developers.google.com/appengine/docs/java/mail/usingjavamail#Senders_and_Recipients )

目标:我希望用户来到网站,注册使用该服务(通过 OAuth)。并且该服务将能够发送将“发件人地址”设置为用户电子邮件地址的电子邮件。(服务:发送电子邮件的电子表格公式)

相关问题: 从 Google App Engine 访问 Gmail 帐户

选项:

1) 避免使用 JavaMail:通过 HTTP 发送电子邮件看起来需要支付少量费用。可以使用:Amazon SES aws.amazon.com/ses/

不可能 2) contextIO -有些人建议使用 contextIO。更新:不发送电子邮件,见http://context.io/docs/2.0

3) OAuth - 看起来您可以使用 OpenID 并以当前登录用户的身份发送电子邮件。因此,也许可以使用 OAuth 进行离线发送。(用户 API https://developers.google.com/appengine/docs/java/users/

4)发件人验证 - (仅可用于测试,而不是生产质量解决方案)App Engine 具有“邀请用户在此应用程序上进行协作”作为查看器。也许有一个用于添加协作者的 API。

选择5) Sockets/SMTP 试用 - (仅经过身份验证的 SMTP)谷歌于 2012 年 9 月发布http://googleappengine.blogspot.com.au/2012_09_01_archive.html

4

4 回答 4

2

好消息是,随着 GAE SDK 1.7.7 的到来,可以直接与 IMAP 和 SMTP 通信,请参阅博客文章http://googleappengine.blogspot.be/2013/04/app-engine-177-发布.html

关键的新功能(预览版)是“出站套接字”

于 2013-04-10T09:09:23.853 回答
1

我没有在生产环境中尝试过,但我已经设置了 GAE 开发服务器以绕过谷歌的邮件系统并直接与 SMTP 服务器通信。请参阅我对另一个问题的回答。如果您可以在生产环境中执行此操作,那么您只需要一个 SMTP 服务器来发送您的电子邮件。

于 2013-04-10T05:59:18.467 回答
1

简而言之 - 您将无法通过 OAuth 做到这一点。主要原因是通常不可能(可靠地、连续地)代表随机用户(即不在您控制的域中的用户)发送大量邮件。

  1. 如果您使用 OAuth,则需要在 OAuth 过程中请求访问用户个人资料/电子邮件。这因供应商而异。一些提供商从不提供电子邮件 (Twitter)。请参阅提供统一 API 的pac4j库,以从不同的提供商检索用户的 OAuth 配置文件。

  2. 当(如果)您从 OAuth 获得电子邮件地址时,您将需要代表该用户发送电子邮件。由于您的 SMTP 服务器无权代表随机用户发送电子邮件(请参阅SPFDKIM),您将很快进入垃圾邮件列表并被阻止。如果这很容易,那么垃圾邮件发送者将过上轻松的生活。

  3. 您可以从 AppEngine 代表用户发送电子邮件,但前提是用户通过用户 Java API登录,该 API 仅适用于 Gmail 或 Google Apps 帐户。

  4. 在 GAE 上,您可以通过新的出站套接字 API轻松使用外部 SMPT 服务器(这只是在 sdk 1.7.7 中从受信任的测试器功能变为实验性功能)。我们有这个设置,它使用大型外部 SMTP 服务没有问题。但是,考虑到上面的第 2 点,这对您想要实现的目标没有多大帮助。

于 2013-04-11T20:48:01.927 回答
1

由于 Google 限制了我们,我们最终使用外部 Amazon SES 服务来处理电子邮件 - 在“发件人:”字段中只允许应用程序管理员电子邮件地址。我们试图切换 DKIM 或 SPF 记录,但这对我们没有帮助,谷歌在这方面非常严格。

于 2013-04-12T05:08:19.490 回答