python - 如何代表 yahoo、hotmail 或 .edu 用户在 GAE 中发送电子邮件?

标签 python google-app-engine email gmail

在 GAE 上,非 gmail 用户可以使用他们的非 gmail 电子邮件创建一个 Google 帐户并登录到 google app engine 应用程序。但是,从该电子邮件发送似乎并不总是有效。

例如,假设 foobar@yahoo.com 创建了一个 google 帐户并且他们登录了。那么,GAE 应该能够在用户请求期间从 foobar@yahoo.com 发送电子邮件。

问题是这似乎不适用于雅虎电子邮件帐户和其他帐户。根据我的经验,只有以下用户可以代表他们发送电子邮件:

  • 当前登录的 gmail 用户
  • 当前登录的用户使用在谷歌应用程序上运行的电子邮件
  • 管理员

但是,您不能代表使用以下电子邮件地址的用户发送电子邮件:

  • yahoo 和 hotmail 用户
  • .gov 或 .mil 用户
  • 大多数 .edu 用户,尽管我认为有些学校使用 google apps 并且它们可以工作。

如果我从这些电子邮件地址发送,我会收到以下错误:

   message.send();
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/mail.py", line 799, in send
    raise ERROR_MAP[e.application_error](e.error_detail)
InvalidSenderError: Unauthorized sender

我是不是漏掉了什么?

我知道在这个主题上有类似的问题,但我认为他们没有解决这些问题。

最佳答案

您的应用程序无权从不属于您的地址发送电子邮件。

这样做被称为欺骗,在过去 8 年中已经做了很多工作来防止欺骗:DKIM、SPF...

如果您需要发送电子邮件,您需要有自己的电子邮件地址/域来发送此应用程序的电子邮件,并且您还需要处理退回邮件。


更新:

谷歌账户

可以使用第 3 方域电子邮件地址(例如 hotmail、yahoo、*.edu 等)创建 Google 帐户。会有一个邮件确认步骤来验证邮件地址,但可能没有比这更大的关系了。电子邮件地址是“用户名”,还有一个由 Google 创建的密码,与第 3 方域无关。

Google 帐户不必具有邮件服务组件。您可以创建 Google 帐户但没有 Gmail。

第 3 方域上的 Google 电子邮件

Google Apps 可以在第 3 方域“上”运行,这可以但不一定包括 Google 电子邮件。

Google 电子邮件可以在任何域上运行而无需任何其他“应用程序”,他们提供电子邮件外包,这对教育部门非常有吸引力。在这种情况下,Google 是该域的电子邮件的权威。

代邮

Google 电子邮件具有设置“代表”电子邮件的功能。这需要配置。确认电子邮件将发送到目标帐户。创建电子邮件后,将使用 邮件信封 中的原始帐户的电子邮件地址发送电子邮件,因此任何传递状态消息(延迟、拒绝)都将返回到该帐户。原始电子邮件地址也将在 sender header 中。您代表发送的地址将显示在邮件的 from header 中,但除此之外,就安全设置和验证而言,它是来自 Google 的 Google 电子邮件。

快速搜索返回了一些技术博客网站,表明他们正在考虑停用此功能以支持第三方 SMTP 服务。

第三方 SMTP 服务器

因此,有人可以使用邮件服务提供商的 SMTP 服务器、用户名和密码配置他们的 Google 电子邮件帐户,并使用它通过邮件服务提供商的有效服务器通过他们的 Google 邮件界面发送电子邮件。因此,这封电子邮件将真正“源自”该域的基础设施。


我没有阅读此 GAE 函数发送电子邮件的文档。但是,我可以看到,如果有人登录了他们的 Google 帐户并且该帐户有邮件服务,则可以使用 API 从该帐户发送电子邮件。

但是,Google 不会生成“来自”未为其分配权限的第 3 方域的电子邮件。该电子邮件将无效;它将被“欺骗”。它可能不符合各种安全增强功能,可能会被恶意使用,并会使它们名誉扫地。

我希望这能让您更清楚地了解情况。

如果缺少这方面的文档,可能是那些编写它的人,对电子邮件如此熟悉,可能很难想象有人会认为这是可能的。

关于python - 如何代表 yahoo、hotmail 或 .edu 用户在 GAE 中发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917547/

相关文章:

python - `features[' contains(%s )' % word.lower()] = True` 在 NLTK 中是什么意思?

python - 使用关键字参数在 GAE ndb 中查询

google-app-engine - Google App Engine - IP 地址列表?

email - & 符号对于 Exchange 电子邮件地址来说是有效字符吗?

c# - 如何知道电子邮件是否被收件人标记为垃圾邮件

email - AWS SES 与 Google Apps 的 Gmail

python - Telnet 和 SSH 在主文件中调用,Telnet 有效但 ssh 失败

Python 浮点精度格式说明符

python - django 多对多比较

java - 谷歌应用程序引擎用户服务登录和注销java