Tipps & Tricks - Mailanbindung mit IMAP

1. Allgemeines

In diesem Beitrag erfahren Sie, wie E-Mails per IMAP aus einem Postfach ausgelesen und verarbeitet werden können. Dabei wird ein Prozess mit einer IMAP-Ereignisquelle und einem IMAP-Ereignisbehandler erstellt. Mit einer Groovy-Skript-Aktion wird die E-Mail in eine Datengruppe geschrieben.

Bitte beachten Sie, dass E-Mails im HTML-Format eine Sicherheitslücke darstellen können (Einschleusen von JavaScript).

2. Beispielapplikation

Laden Sie hier die Beispielapplikation herunter. Importieren Sie die Download-Datei "tipps-tricks-mailanbindung-mit-imap.zip" und wählen Sie für den Import die enthaltene Applikation und den enthaltenen Prozess aus. Wechseln Sie dann in das Modul Prozesse, öffnen Sie den Prozess "Tipps & Tricks - Mailanbindung mit IMAP" und aktivieren Sie ihn. Folgende Funktionalitäten werden durch die Applikation abgedeckt: Die Darstellung der E-Mails (HTML / Plain Text) kann in der Applikation auf der Seite "Verwaltung" umgestellt werden.

3. IMAP-Ereignisquelle




Mit der IMAP-Ereignisquelle wird im Prozess eine Verbindung mit dem E-Mail-Server hergestellt. Im Eigenschaftendialog können alle Verbindungsparameter auf dem Reiter E-Mail-Server angegeben werden.

Bei einer Verbindung per SSL muss ein entsprechendes Zertifikat im Intrexx-Zertifikatsspeicher hinterlegt werden.



Auf dem Reiter Optionen wird festgelegt, in welchem zeitlichen Intervall der E-Mail-Server angefragt wird und welche E-Mails abgeholt werden sollen.

4. Groovy-Aktion




Bei der Verarbeitung einer E-Mail muss je nach Anwendungsfall entschieden werden, wie eine Mail verarbeitet werden soll. Die Verarbeitung der E-Mail kann mit dem SimpleMailParser in Groovy sehr einfach gesteuert werden.
import de.uplanet.lucy.server.mail.SimpleMailParser

def msg = g_event.message
def path = g_dirWorkflowTmp.toPath()
def smp = SimpleMailParser.newInstance()
def pm = smp.parseMessage(msg, path)
Im ersten Schritt wird die Klasse importiert. Eine neue Instanz wird erzeugt und die E-Mail geparst. Das Objekt "pm" bietet eine Vielzahl an Methoden, um z.B. Betreff, Inhalt (als HTML oder Plain Text), Absender oder die Anhänge der Mail zu ermitteln. Hier einige Beispiele:
def strFrom = pm.sender.address //Ermitteln des Absenders
def strTo = TextUtil.listToString(pm.recipients*.address) //Ermitteln der Empfänger
def strCC = TextUtil.listToString(pm.recipientsCc*.address) //Ermitteln der Empfänger in CC
def attachments = pm.getAttachments() //Ermitteln der Anhänge
def strHTMLContent = pm.getRawHTMLContent() //Ermitteln des Inhalts als HTML
def strPlainTextContent = pm.getPlainTextContent() //Ermitteln des Inhalts als Plain Text
Anschließend können die Informationen und Anhänge aus der E-Mail über INSERT-Statements in Datengruppen von Applikationen hinzugefügt werden.