Mail

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):
		...

Leave a Reply