这是我的电子邮件相关 dev_appserver 选项:
--smtp_host=smtp.gmail.com --smtp_port=25 --smtp_user=me@mydomain.com --smtp_password="password"
现在,这仍然不起作用,每次 Google 发布新的 dev_appserver 时,我都必须编辑 api/mail_stub.py 以使事情按照此S/O answer在本地工作。
但是,即使是这种解决方法现在也已停止工作。我收到以下异常:
SMTPSenderRefused: (555, '5.5.2 Syntax error. mw9sm14633203wib.0 - gsmtp', <email.header.Header instance at 0x10c9c9248>)
有没有比我更聪明的人知道如何解决它?
更新
我能够通过使用电子邮件地址(例如发件人和收件人)以简单字符串 ( name@domain.com)的“普通”格式而不是使用尖括号样式 ( Name <name@domain.com>)来在 dev_appserver 上发送电子邮件。这在生产中不是问题:收件人和发件人电子邮件地址可以在mail.send_mail呼叫中使用尖括号。我提出了关于 dev_appserver 和生产之间这种不同行为的票:https : //code.google.com/p/googleappengine/issues/detail? id = 10211 & thanks = 10211 & ts = 1383140754
小智 2
看起来是因为“发件人”现在在开发服务器中存储为“email.header.Header”实例,而不是字符串(我认为是从 SDK 1.8.3 开始)。
根据我的测试,当像“Name”这样的“From”字符串传递到smtplib.SMTP.sendmail时,它会解析该字符串以查找尖括号内的部分(如果有)以用作 SMTP 发件人,给出“”。然而,如果这个参数是一个“email.header.Header”,那么它只是转换为字符串并使用它而不进一步解析,给出“>”,从而导致我们看到的问题。
这是我刚刚在问题跟踪器上发布到 google/appengine/api/mail_stub.py 的补丁,用于将此参数转换回字符串(对我有用):
--- google/appengine/api/mail_stub-orig.py 2014-12-12 20:04:53.612070031 +0000
+++ google/appengine/api/mail_stub.py 2014-12-12 20:05:07.532294605 +0000
@@ -215,7 +215,7 @@
tos = [mime_message[to] for to in ['To', 'Cc', 'Bcc'] if mime_message[to]]
- smtp.sendmail(mime_message['From'], tos, mime_message.as_string())
+ smtp.sendmail(str(mime_message['From']), tos, mime_message.as_string())
finally:
smtp.quit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |