Экземпляр сообщения не имеет атрибута «прочитано» при получении почты от механизма приложений Google - PullRequest
2 голосов
/ 07 декабря 2009

Код в обработчике получения

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'

EDIT Эта ошибка возникает только на локальном компьютере, а не на движке приложения

1 Ответ

0 голосов
/ 08 декабря 2009

У вас есть последняя версия API? для функции входящей почты должно быть 1.2.6 или больше.

Позже я увидел в группах Google "решение", которое я цитирую Джошуа Смита

"Я обнаружил, что вам нужно перезапустить локальную среду разработки до

проводить тестирование входящей почты. В противном случае вы получите ошибку чтения "

Так что каждый раз, когда вы меняете свой код, вы ДОЛЖНЫ перезагружать сервер, даже если добавляете только пробелы (серьезно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...