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中找到