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
I use my email:zjm1126@gmail.c开发者_StackOverflowom send some words to ss@zjm1126.appspotmail.com
I can't get a Receiving Email, why?
I had the same problem after following the google tutorial as well. Thanks to this tute I discovered a rather important bit of code that slipped my mind and isn't in the google tutorial.
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
Hope that helps.
It looks like you're trying to make code from mail send\receive tutorial to work. I used that tutorial also to check how mail service works and didn't have problems with it. What I could suggest doing is:
decouple mail sending and receiving scripts as it seem like you're going to cycle it;
I guess you already have the sending code somewhere else, but just in case, something has to send an email to ss@zjm1126.appspotmail.com to trigger the LogSenderHandler handler;
You can check and debug your code locally by using zjm1126 development console. Try sending an email from here: http://localhost:8080/_ah/admin/inboundmail and put a breakpoint into the LogSenderHandler.receive method to see if it gets hit and what's going on after that;
In your yaml I see other handlers but webapp.WSGIApplication has only LogSenderHandler mappings. It might be the reason why those other scripts are not getting executed;
other than that your code and yaml look fine and should work
hope this helps, regards
Everything looks fine - your handler is returning a 200 OK. If you're not receiving the email it's sending, try logging the values you're using so you can check that everything's valid and what you expect it to be.
精彩评论