我已使用the GAE docs中所述的--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)
我做错了什么?
答案 0 :(得分:2)
如果指定“发件人”地址,则必须与本地计算机对应。谷歌为其开发服务器提供的Mail Stub中的sendmail处理功能如下所示:
...
try:
child.stdin.write(mime_message.as_string())
child.stdin.close()
...
问题是传递给send_mail
方法的发件人地址位于mime_message
标头中。将以下行添加为try块中的第一行将从mime消息中删除该标头。这允许sendmail使用默认的发件人地址:
mime_message._headers = [x for x in mime_message._headers if x[0] != 'From']
可以在/path/to/google_cloud_sdk/platform/google_appengine/google/appengine/api/mail_stub.py