Die App Engine bietet die Möglichkeit E-Mails zu senden und zu empfangen.
E-Mails senden
Die App Engine benötigt keinerlei Konfiguration für das versenden von E-Mails. Die Sender E-Mail muss die des registrierten Administrators der Applikation sein. Die App Engine bietet mit dem Modul mail zwei Möglichkeiten E-Mails zu versenden, die send_mail() Funktion und die EmailMessage Klasse.
mail.send_mail(sender, to, subject, body)
oder
message = mail.EmailMessage(sender, subject) message.to = '' message.body = '' message.send()
Die beiden Möglichkeiten sind eher eine Geschmackssache denn einen wirklichen Unterschied macht das versenden nicht.
Es existiert eine Methode die das senden einer E-Mail an den Administrator ausführt.
So wäre es z. B. möglich den Administrator bei einem Fehler oder einer anderen Aktion zu benachrichtigen.
mail.send_mail_to_admins(sender, subject, body, **kw)
E-Mails empfangen
Eine Applikation kann innerhalb der App Engine auch E-Mails empfangen. Eine E-Mail Adresse hat dann das folgende Format string@appid.appspotmail.com, wobei string jede Zeichenkette enthalten kann. Innerhalb der Konfigurationsdatei muss noch für die Adresse eine Definition stehen. Es muss auch der App Engine mitgeteilt werden dass E-Mails empfangen werden sollen, denn standardmäßig ist diese Service nicht aktiviert.
inbound_services: - mail
Mit der neuen inbound_services Definition muss erst einmal ein Update gemacht werden. Auf dem Dashboard kann man sehen welche Services aktiviert worden sind.
Dann kann man die E-Mail Adresse definieren, die ankommenden Request werden mit Hilfe eines InboundMailHandlers anstatt eines RequestHandlers verarbeitet.
- url: /_ah/mail/email@.*<app-id>\.appspotmail\.com script: imcomming_mail.py login: admin
Die InboundMailHandler Klasse ist eine wepapp Klasse zum behandeln von ankommenden E-Mails. Die Methode receive erhält mail_message als Parameter, was die ankommende E-Mail in Form einer InboundEmailMessage Klasse hat.
google.appengine.ext.webapp.mail_handlers class GetEmailsHandler(InboundMailHandler): def receive(self, mail_message): ...