Python 代表谷歌应用程序用户发送电子邮件

Python 代表谷歌应用程序用户发送电子邮件,python,google-app-engine,Python,Google App Engine,根据文档,如果当前登录的用户拥有Gmail或Google Apps帐户,则可以使用GAE代表该用户发送电子邮件: 出于安全目的,邮件的发件人地址必须是 应用程序管理员的电子邮件地址或任何有效的 应用程序的电子邮件接收地址(请参阅接收邮件)。发送者 也可以是当前用户的Google帐户电子邮件地址 如果用户的帐户是Gmail帐户或在 由谷歌应用程序管理的域。 以下代码用于代表Gmail用户发送电子邮件,但不代表谷歌应用程序用户。试图从Google Apps用户发送邮件会导致“未经授权的发件人”错误

根据文档,如果当前登录的用户拥有Gmail或Google Apps帐户,则可以使用GAE代表该用户发送电子邮件:

出于安全目的,邮件的发件人地址必须是 应用程序管理员的电子邮件地址或任何有效的 应用程序的电子邮件接收地址(请参阅接收邮件)。发送者 也可以是当前用户的Google帐户电子邮件地址 如果用户的帐户是Gmail帐户或在 由谷歌应用程序管理的域。

以下代码用于代表Gmail用户发送电子邮件,但不代表谷歌应用程序用户。试图从Google Apps用户发送邮件会导致“未经授权的发件人”错误

current_user = users.get_current_user()
message = mail.EmailMessage()
message.sender = current_user.email()
message.subject = 'subject text'
message.to = 'joe@example.com'
message.body = 'body text'
if message.is_initialized():
    try:
        message.send()
    except Exception, e:
        logging.error('Unable to send email update: %s' % e)
else:
    logging.error('Email message improperly initialized')
我错过了什么?是否还有其他依赖关系需要注意

编辑:

完整堆栈跟踪:

Unauthorized sender
Traceback (most recent call last):
  File "/base/data/home/apps/s~core-comps/1.358275951854397525/handler_cs_ticket.py", line 274, in sendEmailCopyToClient
    message.send()
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/mail.py", line 900, in send
    raise ERROR_MAP[e.application_error](e.error_detail)
InvalidSenderError: Unauthorized sender

问题似乎在于您的应用程序使用的是联邦登录,这是一项实验性功能,不能代表Google应用程序帐户发送。您可以在管理控制台的“应用程序设置”页面上更改此设置


我将把它添加到文档中。

不要使用
日志记录。错误
,使用
日志记录。异常
,它将为您记录堆栈跟踪。请不要,不要,不要做,除了例外,e!不过,请在你的问题中包含完整的stacktrace。你尝试过许多谷歌应用程序帐户吗?如果你给我发送(通过电子邮件可以,我的名字+最后一个首字母在google.com)你正在尝试使用的帐户,我可以尝试追踪到这一点。谢谢@Moishe-感谢您的提议,我已经通过电子邮件向您发送了帐户详细信息,是的,我已经尝试了几个谷歌应用程序帐户。