【问题标题】:Google App Engine w/ Django - InboundMailHandler appears to only work onceGoogle App Engine with/ Django - InboundeMailHandler 似乎只能工作一次
【发布时间】:2011-04-05 08:48:28
【问题描述】:

我正在为需要接收电子邮件并将接收到的电子邮件消息的一些元素添加到数据存储区的 Google App Engine(使用 Python 和 Django)编写应用程序。我是一个非常新手的程序员。

问题是我指定用于处理传入电子邮件的脚本似乎只运行一次(直到脚本被触及)。

从本地管理控制台向“test@downloadtogo.appspotmail.com”发送测试电子邮件会导致实体被正确添加到本地数据存储中。

发送第二封、第三封等测试电子邮件无效 - 未添加实体。

“触摸”handle_incoming_email.py(我理解为添加或删除空格然后保存),然后发送另一封测试电子邮件,将导致实体被正确添加。

app.yaml:

应用程序:下载togo 版本:1 运行时:蟒蛇 api_version: 1 处理程序: - 网址:/静态 静态目录:静态 - 网址:/.* 脚本:main.py - 网址:/_ah/mail/.+ 脚本:handle_incoming_emaril.py 登录:管理员 入站服务: - 邮件

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" 中是否有错字?
  • 哈,好球!有 - 修复它没有任何区别,这让我想知道 handle_incoming_email.py 是如何被调用的。

标签: python django google-app-engine


【解决方案1】:

处理程序按顺序匹配。 .* 匹配任何请求,因此电子邮件处理程序将永远不会匹配。把.*放在最后。

【讨论】:

  • 谢谢!我没有意识到这一点。不知何故,handle_incoming_email.py 在其他地方被调用 - 不仅没有匹配(根据您的回答),而且我在 app.yaml 中输入错误(根据上面 zovision 的评论)。现在它正在匹配,发送测试电子邮件会导致“KeyError:'警告'” - 我会尝试抓住这个。
  • 除其他问题外,我的计算机上安装了 Python 2.7 以及所需的 Python 2.5 - 这就是导致 KeyError 的原因。再次感谢您的帮助!
猜你喜欢
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2016-04-03
  • 2021-12-25
相关资源
最近更新 更多