The documentation is rather incomplete. I could not set up the inbound email. Here are some details:
app.yaml:
handlers:
- url: /_ah/mail/owner@oladic\.appspotmail\.com
script: handle_owner.py
login: admin
- url: /_ah/mail/support@oladic\.appspotmail\.com
script: handle_support.py
login: admin
- url: /_ah/mail/.+
script: handle_catchall.py
login: admin
- url: .*
script: main.py
inbound_services:
- mail
handle_catchall.py:
# To change this template, choose Tools | Templates
# and open the template in the editor.
import logging, email
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 LogSenderHandler(InboundMailHandler):
def receive(self, mail_message):
logging.info("================================")
logging.info("Received a message from: " + mail_message.sender)
plaintext_bodies = message.bodies('text/plain')
html_bodies = message.bodies('text/html')
for content_type, body in html_bodies:
decoded_html = body.decode()
logging.info("content_type: " + content_type)
logging.info("decoded_html: " + decoded_html)
attachments = []
if message.attachments:
if isinstance(message.attachments[0], basestring):
attachments = [message.attachments]
else:
attachments = message.attachments
logging.info("number of attachments: " + str(len(attachments)))
for filename, content in attachments:
logging.info("plaintext_bodies: " + plaintext_bodies)
logging.info("filename: " + filename)
content
logging.info("--------------------------------")
def main():
application = webapp.WSGIApplication([LogSenderHandler.mapping()], debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
I checked that found some trivial bugs/mistakes. Will update later.
No more issues. Here's the code of working example:
handle_catchall.py: