这是我的接收电子邮件代码,但无法接收电子邮件..(google-app-engine)

时间:2010-04-24 21:22:40

标签: python google-app-engine

import logging, email
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


class LogSenderHandler(InboundMailHandler):
    def receive(self, message):
        _subject = message.subject
        _sender=message.sender
        bodies = message.bodies('text/plain')
        allBodies = ""
        #for body in bodies:
        #  allBodies = allBodies + "\n---------------------------\n" + body[1].decode()
        #m= mail.EmailMessage(sender="zjm1126@gmail.com ",subject="reply to "+_subject)
        #m.to = _sender
        #m.body =allBodies
        #m.send()
        message = mail.EmailMessage(sender="zjm1126@gmail.com",
                                        subject="Your account has been approved")
        message.to = _sender
        message.body = """
        Dear Albert:

        Your example.com account has been approved.  You can now visit
        http://www.example.com/ and sign in using your Google Account to
        access new features.

        Please let us know if you have any questions.

        The example.com Team
        """

        message.send()



application = webapp.WSGIApplication([LogSenderHandler.mapping()], debug=True)

的app.yaml:

application: zjm1126

version: 1-2
runtime: python
api_version: 1

inbound_services:
- mail

handlers:
- url: /media
  static_dir: media

- url: /_ah/mail/.+ 
  script: handle_incoming_email.py 
  login: admin

- url: /
  script: a.py

- url: /sign
  script: a.py

- url: .*
  script: django_bootstrap.py

我用我的电子邮件:zjm1126@gmail.com发送一些单词到ss@zjm1126.appspotmail.com

我无法收到接收电子邮件,为什么?

3 个答案:

答案 0 :(得分:3)

在关注Google教程之后,我遇到了同样的问题。感谢this tute我发现了一些相当重要的代码,这些代码让我不知所措,而不是谷歌教程。

def main():
    run_wsgi_app(application)
if __name__ == "__main__":
    main()

希望有所帮助。

答案 1 :(得分:1)

看起来您正试图通过邮件send\receive tutorial创建代码。我还使用该教程来检查邮件服务的工作方式,并且没有问题。我建议做的是:

  1. 解除邮件发送和接收 脚本,因为它似乎你要去 循环它;

  2. 我猜你已经拥有了 在其他地方发送代码,但是 为了以防万一,必须发送一些东西 发送电子邮件给 ss@zjm1126.appspotmail.com来 触发LogSenderHandler处理程序;

  3. 您可以检查和调试代码 本地使用zjm1126开发 安慰。尝试发送电子邮件 这里: http://localhost:8080/_ah/admin/inboundmail 并把断点放入 LogSenderHandler.receive方法 看看它是否被击中以及发生了什么 之后;

  4. 在你的yaml中我看到其他处理程序,但webapp.WSGIApplication只有LogSenderHandler映射。这可能是其他脚本没有被执行的原因;

  5. 除了你的代码和yaml看起来很好并且应该工作

    希望这有帮助,尊重

答案 2 :(得分:0)

一切都很好 - 你的处理程序返回200 OK。如果您没有收到它发送的电子邮件,请尝试记录您正在使用的值,这样您就可以检查所有内容是否有效以及您希望它是什么。