Python Sendmail不适用于本地GAE本地开发服务器

Python Sendmail不适用于本地GAE本地开发服务器,python,google-app-engine,Python,Google App Engine,我使用中所述的--enable_sendmail=yes选项启用了sendmail,但仍然没有收到任何电子邮件(尽管电子邮件确实出现在日志消息中)。简化的代码如下所示: from google.appengine.api import mail SENDER_EMAIL_ADDRESS = "admin@APPID.appspot.com" msg = "Test message" subject = "Test subject" recipient = "{} <{}>".

我使用中所述的
--enable_sendmail=yes
选项启用了sendmail,但仍然没有收到任何电子邮件(尽管电子邮件确实出现在日志消息中)。简化的代码如下所示:

from google.appengine.api import mail

SENDER_EMAIL_ADDRESS = "admin@APPID.appspot.com"

msg = "Test message"

subject = "Test subject"

recipient = "{} <{}>".format('username', 'username@gmail.com')

mail.send_mail(sender=SENDER_EMAIL_ADDRESS,
               to=recipient,
               subject=subject,
               body=msg)
...
try:
    child.stdin.write(mime_message.as_string())
    child.stdin.close()
...
来自google.appengine.api导入邮件
发件人\电子邮件\地址=”admin@APPID.appspot.com"
msg=“测试消息”
subject=“测试对象”
收件人=“{}”。格式('username','username@gmail.com')
mail.send_mail(发件人=发件人电子邮件地址,
收件人=收件人,
主语,
body=msg)

我做错了什么?

如果指定发件人地址,它必须与本地计算机对应。google为其开发服务器提供的邮件存根中的sendmail处理功能如下所示:

from google.appengine.api import mail

SENDER_EMAIL_ADDRESS = "admin@APPID.appspot.com"

msg = "Test message"

subject = "Test subject"

recipient = "{} <{}>".format('username', 'username@gmail.com')

mail.send_mail(sender=SENDER_EMAIL_ADDRESS,
               to=recipient,
               subject=subject,
               body=msg)
...
try:
    child.stdin.write(mime_message.as_string())
    child.stdin.close()
...
问题是传递到
send\u mail
方法的发件人地址位于
mime\u message
头中。添加以下行作为try块中的第一行将从mime消息中删除该头。这允许sendmail使用默认发件人地址:

mime_message._headers = [x for x in mime_message._headers if x[0] != 'From']
具有此功能的文件可在
/path/to/google\u cloud\u sdk/platform/google\u appengine/google/appengine/api/mail\u stub.py中找到