Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python InboundEmailMessage引发UnicodeDecodeError异常_Python_Google App Engine_Email_Unicode_Decode - Fatal编程技术网

Python InboundEmailMessage引发UnicodeDecodeError异常

Python InboundEmailMessage引发UnicodeDecodeError异常,python,google-app-engine,email,unicode,decode,Python,Google App Engine,Email,Unicode,Decode,在我的生产日志中,我看到许多错误,如下所示 0.1.0.20 - - [04/Oct/2013:11:07:03 -0700] "POST /_ah/mail/mail@myapp.appspotmail.com HTTP/1.1" 500 0 - - "myapp.appspot.com" ms=258 cpu_ms=27 app_engine_release=1.8.5 instance=00c61b117c920d68f9913bdef33c5b25f4288840 E 2013-10-

在我的生产日志中,我看到许多错误,如下所示

0.1.0.20 - - [04/Oct/2013:11:07:03 -0700] "POST /_ah/mail/mail@myapp.appspotmail.com HTTP/1.1" 500 0 - - "myapp.appspot.com" ms=258 cpu_ms=27 app_engine_release=1.8.5 instance=00c61b117c920d68f9913bdef33c5b25f4288840

E 2013-10-04 22:07:03.434 
    'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
    Traceback (most recent call last):
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
        rv = self.handle_exception(request, response, e)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
        rv = self.router.dispatch(request, response)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
        return route.handler_adapter(request, response)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
        return handler.dispatch()
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
        return self.handle_exception(e, self.app.debug)
      File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
        return method(*args, **kwargs)
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/webapp/mail_handlers.py", line 69, in post
        self.receive(mail.InboundEmailMessage(self.request.body))
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 775, in __init__
        self.update_from_mime_message(mime_message)
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 1337, in update_from_mime_message
        super(InboundEmailMessage, self).update_from_mime_message(mime_message)
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 1246, in update_from_mime_message
        super(EmailMessage, self).update_from_mime_message(mime_message)
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 1126, in update_from_mime_message
        subject = _decode_and_join_header(mime_message['subject'], separator=u'')
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 591, in _decode_and_join_header
        for s, c in email.header.decode_header(header))
      File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 591, in <genexpr>
        for s, c in email.header.decode_header(header))
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
0.1.0.20---[04/Oct/2013:11:07:03-0700]“POST/\u ah/mail/mail@myapp.appspotmail.comHTTP/1.1“500 0--“myapp.appspot.com”ms=258 cpu_ms=27 app_engine_release=1.8.5实例=00C61B17C920D68F9913BDEF33C5B25F428840
E 2013-10-04 22:07:03.434
“ascii”编解码器无法解码位置0处的字节0xd0:序号不在范围内(128)
回溯(最近一次呼叫最后一次):
文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py”,第1511行,在调用中__
rv=自身处理异常(请求、响应、e)
文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py”,第1505行,在调用中__
rv=自我路由器调度(请求、响应)
默认情况下,文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py”第1253行
返回路由处理程序适配器(请求、响应)
文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py”,第1077行,在调用中__
返回处理程序.dispatch()
文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py”,第547行,在分派中
返回self.handle_异常(e,self.app.debug)
文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.3/webapp2.py”,第545行,在分派中
返回方法(*args,**kwargs)
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/webapp/mail_handlers.py”,第69行,在post中
self.receive(mail.InboundEmailMessage(self.request.body))
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第775行,在__
自我更新来自mime消息(mime消息)
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第1337行,在更新消息中
超级(InboundEmailMessage,self)。从mime消息(mime消息)更新
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第1246行,在更新消息中
超级(EmailMessage,self)。从mime\u消息(mime\u消息)更新
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第1126行,在更新消息中
subject=_decode_和_join_头(mime_消息['subject'],分隔符=u')
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第591行,在_decode_和_join_头中
对于电子邮件中的s、c.header.decode_header(header))
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第591行,在
对于电子邮件中的s、c.header.decode_header(header))
UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xd0:序号不在范围内(128)

我怎样才能得到更多的细节发生了什么?如何正确处理此异常?

我对此代码没有unicode问题(没有
InboundMailHandler
):

编辑:

我已经在主题字段中的
dev_appserver>Inbound Mail
中使用
“èè”
进行了一些测试,主题是unicode,但是如果您的
msgèu body
不是unicode,请首先找到
类型(msgèbody)
的编解码器并解码主题

message = mail.InboundEmailMessage(request.body)
msg_body = message.subject # if unicode or
msg_body = message.subject.decode("ascii") # if ascii then
_str = msg_body.encode("utf-8") # str

我对此代码没有unicode问题(没有
InboundMailHandler
):

编辑:

我已经在主题字段中的
dev_appserver>Inbound Mail
中使用
“èè”
进行了一些测试,主题是unicode,但是如果您的
msgèu body
不是unicode,请首先找到
类型(msgèbody)
的编解码器并解码主题

message = mail.InboundEmailMessage(request.body)
msg_body = message.subject # if unicode or
msg_body = message.subject.decode("ascii") # if ascii then
_str = msg_body.encode("utf-8") # str

谢谢我的主要问题是,这个问题只发生在一些电子邮件上,而不是所有的电子邮件上。甚至在我开始解析它之前。我甚至不知道如何获取消息的详细信息,这导致了这个问题。搁置
InboundMailHandler
可以帮助调试。只有在发现“奇怪”字符时,应用程序才会引发unicode错误。如果您提交的是主题。顺便说一句,py27中的编码是一个黑洞。你建议使用
webapp2.RequestHandler
/
post
,而不是
InboundMailHandler
?不管我还没有解决这个问题,我都会给你奖金——你给了我一个如何进一步调试它的想法。谢谢,谢谢,没必要。您是否尝试过使用
message.subject.decode()
?谢谢。我的主要问题是,这个问题只发生在一些电子邮件上,而不是所有的电子邮件上。甚至在我开始解析它之前。我甚至不知道如何获取消息的详细信息,这导致了这个问题。搁置
InboundMailHandler
可以帮助调试。只有在发现“奇怪”字符时,应用程序才会引发unicode错误。如果您提交的是主题。顺便说一句,py27中的编码是一个黑洞。你建议使用
webapp2.RequestHandler
/
post
,而不是
InboundMailHandler
?不管我还没有解决这个问题,我都会给你奖金——你给了我一个如何进一步调试它的想法。谢谢,谢谢,没必要。您是否尝试过使用
message.subject.decode()
import base64

message_raw = request.body.encode('UTF-8')
message_decoded = base64.urlsafe_b64decode(message_raw)
message = InboundEmailMessage(message_decoded)