Tipps & Tricks - Mailanbindung mit IMAP

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

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:

  • Ermitteln des Absenders

  • Ermitteln der Empfänger (inklusive CC)

  • Ermitteln des Empfangsdatums

  • Ermitteln des Betreffs

  • Inhalt der E-Mail von HTML nach Plain Text konvertieren

  • Inhalt der E-Mail von Plain Text nach HTML konvertieren

  • Darstellung der E-Mail in HMTL

  • Darstellung der E-Mail in Plain Text

  • Ermitteln der Anhänge

  • Ermitteln / Auflösen der Inline-Attachements

  • Anlegen der E-Mail in Intrexx Datengruppe

  • Anlegen der Anhänge in Intrexx Datengruppe

Die Darstellung der E-Mails (HTML / Plain Text) kann in der Applikation auf der Seite "Verwaltung" umgestellt werden.

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. Informationen zum Ordnerpfad finden Sie hier.

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.

Beim Abholen von E-Mails kann Intrexx nur sehen, welche E-Mails auf dem Server sind und ob diese ungelesen oder gelesen sind. Sollten Sie also ungelesene E-Mails verarbeiten wollen (z.B. um sie auszulesen und in eine Datengruppe zu speichern), empfiehlt es sich, die verarbeiteten Mails hinterher als "gelesen" zu markieren, da sie sonst wieder erneut abgeholt werden. Setzen Sie dazu auf dem Reiter "Optionen" die Einstellungen "Abschließende Aktionen auf dem E-Mail-Server ausführen" und "Als gelesen markieren".

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.