E-Mail-Nachrichten werden an Ihre Anwendung als HTTP-Anfragen gesendet. Zur Verarbeitung eingehender E-Mail-Nachrichten müssen Sie E-Mail-Adressen mit Servlets in Ihrer Anwendungskonfiguration verknüpfen und dann den Servlet-Code in Ihre App einbinden. Die eingehende E-Mail generiert HTTP-Anfragen, die zur Verarbeitung an die entsprechenden Servlets übergeben werden.
Anwendung für den Empfang von E-Mails konfigurieren
Wenn Sie eine neue Anwendung erstellen, sind eingehende E-Mails standardmäßig deaktiviert. Wenn Sie eingehende E-Mails nicht ausdrücklich aktivieren, werden an Ihre Anwendung gesendete Nachrichten ignoriert.
Zum Aktivieren des Dienstes für eingehende E-Mails ändern Sie die Konfigurationsdateien appengine-web.xml
und web.xml
:
E-Mails in appengine-web.xml aktivieren
Ändern Sie appengine-web.xml
, indem Sie einen inbound-services
-Abschnitt hinzufügen, der den Dienst für eingehende E-Mails aktiviert:
E-Mail-Nachrichten werden mit der folgenden URL als HTTP POST-Anfragen an Ihre Anwendung gesendet:
/_ah/mail/<ADDRESS>
<ADDRESS>
ist eine vollständige E-Mail-Adresse, einschließlich des Domainnamens. Beachten Sie, dass Ihre Anwendung, selbst wenn sie in einer benutzerdefinierten Domain bereitgestellt wird, keine E-Mails an die Adressen in dieser Domain empfangen kann.
E-Mails in web.xml aktivieren
Ändern Sie web.xml
, indem Sie E-Mail-URLs Servlets zuordnen:
In den obigen Snippets stimmt /_ah/mail/*
mit allen E-Mails überein, die an die Anwendung adressiert sind. E-Mail-Servlets werden in der Version Ihrer Anwendung ausgeführt, die derzeit in App Engine ausgeführt wird.
Musterbasierte Verteilung eingehender Nachrichten
Wenn Ihre Anwendung den Musterabgleich nutzt, kann die Verwendung von Filtern auf der Grundlage der folgenden Code-Snippets eine gute Idee sein.
Konkreter Handler
Der obige konkrete Handler wird mit dem folgenden Snippet in web.xml
registriert:
Beachten Sie, dass security-constraint
-Anweisungen für Filter nicht möglich sind. Sicherheitsrichtlinien für den Handler müssen auf andere Weise eingeführt werden.
Abstrakter Handler
Eingehende E-Mails verarbeiten
Das JavaMail-API enthält die MimeMessage
-Klasse, mit deren Hilfe Sie eingehende E-Mail-Nachrichten analysieren können. MimeMessage
hat einen Konstruktor, der einen java.io.InputStream
und eine JavaMail-Sitzung akzeptiert, die eine leere Konfiguration enthalten kann.
So erstellen Sie eine MimeMessage
-Instanz:
Anschließend können Sie mit verschiedenen Methoden das message
-Objekt analysieren:
- Rufen Sie
getFrom()
auf, um den Absender der Nachricht zurückzugeben. - Rufen Sie
getContentType()
auf, um den Nachrichteninhaltstyp zu extrahieren. DiegetContent()
-Methode gibt ein Objekt zurück, das dieMultipart
-Schnittstelle implementiert. - Rufen Sie
getCount()
auf, um die Anzahl der Teile zu ermitteln. - Rufen Sie
getBodyPart(int index)
auf, um einen bestimmten Teil des Nachrichtentexts zurückzugeben.
Nachdem Sie Ihre Anwendung für die Verarbeitung eingehender E-Mails eingerichtet haben, können Sie mit der Entwicklungsserverkonsole eingehende E-Mail-Nachrichten simulieren. Weitere Informationen, einschließlich zum Starten des Entwicklungsservers, finden Sie unter Java-Entwicklungsserver. Nachdem Sie Ihre Anwendung auf dem lokalen Entwicklungsserver gestartet haben, können Sie auf Ihre Anwendung zugreifen. Rufen Sie hierfür die URL http://localhost:8888/_ah/admin/ auf und ersetzen Sie dabei den Wert 8888 durch den von Ihnen verwendeten Port, sofern Sie nicht den Standardport für den lokalen Entwicklungsserver übernehmen.
Klicken Sie im Entwicklungsserver links auf "Inbound Mail" (Eingehende E-Mails), füllen Sie das angezeigte Formular aus und klicken Sie auf "Send Email" (E-Mail senden).