【发布时间】:2012-10-28 23:48:23
【问题描述】:
我的测试代码在 GAE 1.7.1 版开始失败。我回到 1.7.0 等待修复,但我的测试代码在 1.7.2 中仍然失败。这是导致失败的最小测试:
mail.send_mail("sender@example.com", "receiver@example.com",
u"sübject".encode("utf-8"), "body")
mail_list = self.mail_stub.get_sent_messages()
我收到以下错误:
Traceback (most recent call last):
File "/Users/.../tests/unit_tests.py", line 19, in testTest
mail_list = self.mail_stub.get_sent_messages()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/apiproxy_stub.py", line 184, in WrappedMethod
return method(self, *args, **kwargs)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail_stub.py", line 183, in get_sent_messages
email_message = mail.EmailMessage(mime_message=mime_message)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail.py", line 742, in __init__
self.update_from_mime_message(mime_message)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail.py", line 1213, in update_from_mime_message
super(EmailMessage, self).update_from_mime_message(mime_message)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail.py", line 1093, in update_from_mime_message
subject = _decode_and_join_header(mime_message['subject'], separator=u'')
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail.py", line 558, in _decode_and_join_header
for s, c in email.header.decode_header(header))
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail.py", line 558, in <genexpr>
for s, c in email.header.decode_header(header))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
如果我做错了什么或者这是 GAE 错误,您能告诉我吗?
【问题讨论】:
-
我不明白,你为什么对主题进行编码。您的 python 文件是否包含在前两行:#!/usr/bin/python # -- coding: utf-8 --
-
@voscausa,我的 Python 文件有编码行。我的理解是您需要对非 ascii 主题进行编码,而 GAE 不会为您这样做。
-
可以,但是你不发给外界,你发给Mail API。
-
@voscausa,这是对邮件 API 的调用。
-
但是使用 encode("utf-8" ) 您可以将其从 unicode 转换为 Mail API 的字节。见这篇文章:evanjones.ca/python-utf8.html
标签: python google-app-engine unicode