GAE从gmail帐户发送电子邮件

时间:2013-04-03 03:14:47

标签: java google-app-engine email

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

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

相关问题: Accessing Gmail account from Google App Engine

选项:

1)避免使用JavaMail:通过HTTP发送的电子邮件似乎只需支付少量费用即可。可以使用:Amazon SES aws.amazon.com/ses/

不可能  2)contextIO - some people建议使用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)套接字/ SMTP试用 - (仅限经过验证的SMTP)2012年9月google发布了http://googleappengine.blogspot.com.au/2012_09_01_archive.html

4 个答案:

答案 0 :(得分:1)

我还没有在制作过程中试过这个,但是我设置了GAE开发服务器以绕过谷歌的邮件系统并直接与SMTP服务器对话。查看我的answer on another question。如果您可以在生产中执行此操作,那么您只需要一个可以发送电子邮件的SMTP服务器。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

简而言之 - 您将无法通过OAuth执行此操作。主要原因是,代表随机用户(即不在您控制的域中的用户)通常(可靠,连续)发送邮件是不可能的。

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

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

  3. 您可以代表来自AppEngine的用户发送电子邮件,但前提是用户只能通过Users Java API登录,这只适用于Gmail或Google Apps帐户。

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

答案 3 :(得分:1)

我们最终使用外部Amazon SES服务收发电子邮件,因为Google限制我们 - 在“from:”字段中只允许使用应用管理员电子邮件地址。我们尝试切换DKIM或SPF记录,但这对我们没有帮助,谷歌对此非常严格。