这是我的接收邮件代码,但无法接收邮件.. (谷歌云引擎)

1 投票
3 回答
1051 浏览
提问于 2025-04-15 21:59
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

一切看起来都没问题 - 你的处理程序返回了一个200 OK的状态。如果你没有收到它发送的邮件,试着记录一下你使用的值,这样你可以检查一下这些值是否有效,以及是否和你预期的一样。

3

我在跟着谷歌的教程学习时也遇到了同样的问题。多亏了这个教程,我发现了一段我之前忘记的重要代码,而这段代码在谷歌的教程里并没有提到。

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

希望这对你有帮助。

1

看起来你正在尝试让邮件发送和接收的代码正常工作,这个代码来自于一个关于邮件的发送和接收教程。我也用过这个教程来了解邮件服务是怎么运作的,没遇到什么问题。以下是我给你的建议:

  1. 把发送邮件和接收邮件的代码分开,因为你似乎会在循环中使用它们。

  2. 我猜你已经在其他地方有发送邮件的代码,但以防万一,得确保有东西能发送邮件到 ss@zjm1126.appspotmail.com,这样才能触发 LogSenderHandler 这个处理器。

  3. 你可以在本地使用 zjm1126 开发控制台来检查和调试你的代码。试着从这里发送邮件:http://localhost:8080/_ah/admin/inboundmail,并在 LogSenderHandler.receive 方法里设置一个断点,看看它是否被触发,以及之后发生了什么。

  4. 在你的 yaml 文件里,我看到有其他处理器,但 webapp.WSGIApplication 只映射了 LogSenderHandler。这可能是其他脚本没有被执行的原因。

除此之外,你的代码和 yaml 文件看起来都没问题,应该可以正常工作。

希望这些对你有帮助,祝好!

撰写回答