这是我的接收邮件代码,但无法接收邮件.. (谷歌云引擎)
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
看起来你正在尝试让邮件发送和接收的代码正常工作,这个代码来自于一个关于邮件的发送和接收教程。我也用过这个教程来了解邮件服务是怎么运作的,没遇到什么问题。以下是我给你的建议:
把发送邮件和接收邮件的代码分开,因为你似乎会在循环中使用它们。
我猜你已经在其他地方有发送邮件的代码,但以防万一,得确保有东西能发送邮件到 ss@zjm1126.appspotmail.com,这样才能触发 LogSenderHandler 这个处理器。
你可以在本地使用 zjm1126 开发控制台来检查和调试你的代码。试着从这里发送邮件:http://localhost:8080/_ah/admin/inboundmail,并在 LogSenderHandler.receive 方法里设置一个断点,看看它是否被触发,以及之后发生了什么。
在你的 yaml 文件里,我看到有其他处理器,但 webapp.WSGIApplication 只映射了 LogSenderHandler。这可能是其他脚本没有被执行的原因。
除此之外,你的代码和 yaml 文件看起来都没问题,应该可以正常工作。
希望这些对你有帮助,祝好!