Skip to main content
 首页 » 编程设计

python之消息实例在 Google 应用引擎邮件接收中没有属性 'read'

2025年05月04日66soundcode

接收处理程序中的代码

class LogSenderHandler(InboundMailHandler): 
   def receive(self, mail_message): 
    logging.info("Received a message from: " + mail_message.sender) 
    #logging.info("Received a message from: " + mail_message.attachments) 
    logging.info("Received a message from: " + mail_message.date) 
    logging.info("Received a message from: " + mail_message.subject) 
    report = DocFile() 
    report.doc_name = mail_message.subject 
    if mail_message.attachments is not None: 
        report.doc_file = mail_message.attachments 
    else: 
        report.doc_file = mail_message.bodies(content_type='text/plain') 
    report.put() 
 
application = webapp.WSGIApplication([LogSenderHandler.mapping()], debug=True)         
 
def main(): 
run_wsgi_app(application) 
if __name__ == "__main__": 
 main() 

url.py 中的代码

inbound_services: 
- mail 
 
handlers: 
- url: /_ah/mail/.+  
script: handle_incoming_email.py 

当我尝试从 http://localhost:8080/_ah/admin/inboundmail 发送一封简单的电子邮件时出错

Message send failure 
 
    Traceback (most recent call last): 
  File "F:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 509, in __call__ 
    handler.post(*groups) 
  File "F:\Program Files\Google\google_appengine\google\appengine\ext\webapp\mail_handlers.py", line 58, in post 
    self.receive(mail.InboundEmailMessage(self.request.body)) 
  File "F:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 547, in __init__ 
    self.update_from_mime_message(mime_message) 
  File "F:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 1081, in update_from_mime_message 
    mime_message = _parse_mime_message(mime_message) 
  File "F:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 232, in _parse_mime_message 
    return email.message_from_file(mime_message) 
  File "F:\Python25\lib\email\__init__.py", line 66, in message_from_file 
    return Parser(*args, **kws).parse(fp) 
  File "F:\Python25\lib\email\parser.py", line 68, in parse 
    data = fp.read(8192) 
  AttributeError: Message instance has no attribute 'read' 

编辑 此错误仅出现在本地机器上,而不出现在应用引擎上

请您参考如下方法:

您有最新版本的 API 吗?收邮件功能需要1.2.6以上版本。

后来我在 google groups 看到我引用 Joshua Smith 的“解决方案”

"我发现你之前需要重启本地开发环境

进行任何入站邮件测试。否则,你会得到那个读取错误"

因此每次更改代码时,您必须重新启动服务器,即使只是添加空格(严重)