And*_*yha 2 python email google-app-engine handler
我在GAE上编写可以解析和存储传入邮件的应用程序.我准备了一些简单的电子邮件解析代码,但是当我尝试模拟从本地开发服务器上的admin dev控制台接收的电子邮件时出现问题:
/develop/google_appengine/google/appengine/runtime/wsgi.py", line 193, in Handle
result = handler(self._environ, self._StartResponse)
TypeError: 'module' object is not callable
INFO 2012-05-08 16:14:43,516 dev_appserver.py:2891] "POST /_ah/mail/test@example.com HTTP/1.1" 500 -
Run Code Online (Sandbox Code Playgroud)
app.yaml中:
application: mailhandler
version: 1
runtime: python27
api_version: 1
threadsafe: true
inbound_services:
- mail
handlers:
- url: /_ah/mail/.+
script: email_handler
login: admin
Run Code Online (Sandbox Code Playgroud)
email_handler.py:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import mail
from models import DataStoreManager
class LogSenderHandler(InboundMailHandler):
# Receiving new mail message and parsing it
def receive(self, mail_message):
manager = DataStoreManager()
instance = manager.get_instance_by_email(mail_message.sender.lowercase())
email_key = manager.store_email(instance, instance.user, mail_message, mail_message.attachments)
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我认为发生的事情是,在app.yaml中,您将模块/文件定义为脚本而不是应用程序,模块当然不可调用.
将app.yaml定义更改为:
handlers:
- url: /_ah/mail/.+
script: email_handler.application
login: admin
Run Code Online (Sandbox Code Playgroud)
并在最后添加此行 email_handler.py
application = webapp2.WSGIApplication([LogSenderHandler.mapping()], debug=True)
Run Code Online (Sandbox Code Playgroud)
这里的文档:https: //developers.google.com/appengine/docs/python/mail/receivingmail
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |