Я пишу приложение для Google App Engine (с Python и Django), которое должно получать электронную почту и добавлять некоторые элементы полученных сообщений электронной почты в хранилище данных. Я очень начинающий программист.
Проблема в том, что указанный мной сценарий для обработки входящей электронной почты запускается только один раз (до тех пор, пока сценарий не будет затронут).
Отправка тестового электронного письма из локальной консоли администратора, скажем, на «test@downloadtogo.appspotmail.com» приводит к правильному добавлению объекта в локальное хранилище данных.
Отправка второго, третьего и т. Д. Тестового электронного письма не имеет никакого эффекта - объект не добавляется.
«Касание» 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)