Sendmail不适用于本地GAE本地开发服务器
问题描述:
我已经使用--enable_sendmail=yes
选项启用了sendmail,如the GAE docs中所述,并且仍然没有收到任何电子邮件(虽然电子邮件确实出现在日志消息中)。简化的代码如下所示:Sendmail不适用于本地GAE本地开发服务器
from google.appengine.api import mail
SENDER_EMAIL_ADDRESS = "[email protected]"
msg = "Test message"
subject = "Test subject"
recipient = "{} <{}>".format('username', '[email protected]')
mail.send_mail(sender=SENDER_EMAIL_ADDRESS,
to=recipient,
subject=subject,
body=msg)
我在做什么错?
答
如果指定发件人地址,它必须与本地计算机相对应。在邮件存根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