我正在接收我的Google App Engine应用程序的入站电子邮件,使用“标准”入站邮件处理程序,遵循以下示例in the docs
似乎是某个发送到应用程序的电子邮件(不是由我发送的)导致电子邮件api抛出LookupError:unknown编码异常。请看回溯。
据我所知,这个异常是在调用应用程序的邮件处理程序之前抛出的,显然这使得应用程序的代码无法捕获和处理。真的是这样吗?
它也似乎APP引擎重试失败的消息在大约40分钟的间隔,继续产生错误(和警报……)有没有办法中止这个?
谢谢你的帮助。
回溯:
回溯(最近一次呼叫时间):
文件“/base/data/home/runtimes/python27/python27-lib/versions/third-party/webapp2-2.5.2/webapp2.py”,第1535行,在__
rv=self.handle_异常(请求、响应、e)
文件“/base/data/home/runtimes/python27/python27-lib/versions/third-party/webapp2-2.5.2/webapp2.py”,第1529行,在__
rv=self.router.dispatch(请求、响应)
文件“/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,第1278行,默认为dispatcher
返回route.handler_适配器(请求、响应)
文件“/base/data/home/runtimes/python27/python27-lib/versions/third-party/webapp2-2.5.2/webapp2.py”,第1102行,在__
返回处理程序.dispatch()
文件“/base/data/home/runtimes/python27/python27-lib/versions/third-party/webapp2-2.5.2/webapp2.py”,第572行,调度中
返回self.handle_异常(e,self.app.debug)
文件“/base/data/home/runtimes/python27/python27-lib/versions/third-party/webapp2-2.5.2/webapp2.py”,570行,调度中
返回方法(*args,**kwargs)
文件“/base/data/home/runtimes/python27/python27-lib/versions/1/google/appengine/ext/webapp/mail-handlers.py”,第70行,在post中
self.receive(mail.InboundEmailMessage(self.request.body))
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第939行,在__
self.update_from_mime_消息(mime_消息)
文件“/base/data/home/runtimes/python27/python27-lib/versions/1/google/appengine/api/mail.py”,第1513行,来自“mime”消息的update-
super(InboundEmailMessage,self).update_from_mime_消息(mime_消息)
文件“/base/data/home/runtimes/python27/python27-lib/versions/1/google/appengine/api/mail.py”,第1422行,来自“mime”消息的update-
super(电子邮件,self).update_from_mime_消息(mime_消息)
文件“/base/data/home/runtimes/python27/python27-lib/versions/1/google/appengine/api/mail.py”,第1291行,来自“mime”消息的update-
subject=_decode_and_join_header(mime_message['subject'],separator=u')
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第597行,in _decode_and_join_header
对于s,email.header.decode_header(header))中的字符集
文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第597行,在
对于s,email.header.decode_header(header))中的字符集
LookupError:未知编码:iso-8859-8-i

最佳答案

调用入站邮件处理程序的post方法时发生错误。

  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/webapp/mail_handlers.py", line 70, in post
    self.receive(mail.InboundEmailMessage(self.request.body))

最简单的解决方案是重写自己处理程序中的post方法以捕获错误:
import logging
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler


class MyInboundMailHandler(InboundMailHandler):

    def post(self):
        try:
            super(MyInboundMailHandler, self).post()
        except LookupError as ex:
            logging.warning('Could not process message because %s.', ex)

    def receive(self, mail_message):
        # Process message

如果不想丢失邮件,可以创建并注册自定义的iso-8859-8-i编解码器。这似乎不是一个有案可稽的过程,但这些问题提供了一些提示:
How do I properly create custom text codecs?
Custom Python Charmap Codec
how do I write a custom encoding in python to clean up my data?
标准库的iso-8859-8 encoding提供了一个很好的模板。

关于python - Google App Engine python入站邮件LookupError:未知编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45988474/

10-11 07:39