我正在爲需要接收電子郵件並將接收到的電子郵件的某些元素添加到數據存儲的Google App Engine(使用Python和Django)編寫應用程序。我是一個非常新手的程序員。帶有Django的Google App Engine - InboundMailHandler似乎只能運行一次
問題是我指定處理傳入電子郵件的腳本似乎只運行一次(直到腳本被觸摸)。
將測試電子郵件從本地管理控制檯發送到'[email protected]'會導致實體正確添加到本地數據存儲。
發送第二個,第三個等測試郵件不起作用 - 不添加實體。
「接觸」 handle_incoming_email.py
(我的理解是指添加或刪除一個空格,然後保存),然後發送另一個測試電子郵件,將導致正確添加的實體。
app.yaml中:
application: downloadtogo version: 1 runtime: python api_version: 1 handlers: - url: /static static_dir: static - url: /.* script: main.py - url: /_ah/mail/.+ script: handle_incoming_emaril.py login: admin inbound_services: - mail
handle_incoming_email.py:
from downloadtogo.models import Email
import logging, email
import wsgiref.handlers
import exceptions
from google.appengine.api import mail
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler
class MailHandler(InboundMailHandler):
def receive(self, message):
email = Email()
email.from_address = message.sender
email.put()
def main():
application = webapp.WSGIApplication([MailHandler.mapping()], debug=True)
wsgiref.handlers.CGIHandler().run(application)
main()
models.py:
from appengine_django.models import BaseModel
from google.appengine.ext import db
class Email(db.Model):
from_address = db.StringProperty()
to_address = db.StringProperty()
body = db.StringProperty(multiline=True)
added_on = db.DateTimeProperty(auto_now_add=True)
在您的app.yaml「handle_incoming_emaril.py」中是否存在拼寫錯誤? – zovision 2010-08-29 10:41:08
哈,好抓!有 - 修復它沒有任何區別,這讓我想知道handle_incoming_email.py是如何被調用的。 – oldpal 2010-08-29 18:12:01