E-Mail-Empfang mit IMAP-Protokoll

In 4D v18 haben wir eine neue Methode zum Versenden von E-Mails eingeführt. In 4D v18 R2 fügten wir dann eine neue Möglichkeit zum Abrufen von E-Mails über POP3 hinzu. Jetzt, in 4D v18 R4, unternehmen wir die ersten Schritte für eine neue Art, das IMAP-Protokoll zu handhaben. Wie für SMTP und POP3 gibt es auch für das IMAP-Protokoll einen neuen Befehl IMAP New transporter.

Das Internet Message Access Protocol (IMAP) ist ein Internet-Standardprotokoll, das von E-Mail-Clients zum Abrufen von E-Mail-Nachrichten von einem Mailserver verwendet wird. Dieses Protokoll ermöglicht die Verwaltung mehrerer Postfächer, das Herunterladen von E-Mails, die Durchführung von Suchvorgängen auf dem Server, die Verwaltung des Nachrichtenstatus und vieles mehr!

Und mit dieser ersten IMAP-Funktion können Sie dem Transporter Methoden hinzufügen, um: die Liste der verfügbaren Postfächer zu erhalten, ein Postfach auszuwählen und E-Mails von dem ausgewählten Postfach zu empfangen. Schauen wir uns das an.

Das folgende HDI demonstriert, wie man E-Mails über IMAP empfängt:

HDI E-Mail-Empfang über IMAP

IMAP-Transporter erstellen

Wie bei SMTP und POP3 müssen Sie bei der Verwendung des IMAP-Protokolls zunächst einen Transporter erstellen (mit dem IMAP New transporter Befehl):

$server:=New object
$server .host:="yourIMAPhost.com"
$server .port:=995
$server .user:="4D.IMAP@mail.com"
$server .password:="XXXXXX"
// Create a transporter from your server information
$IMAP_Transporter:=IMAP New transporter($server)

Mailbox auswählen

Da IMAP mehrere Postfächer unterstützt, müssen Sie zunächst das gewünschte Postfach angeben.

Sie können eine Liste aller verfügbaren Postfächer auf Ihrem Mailserver mit der getBoxList Methode:

$boxList:=$IMAP_Transporter.getBoxList()
Alert ("Ihr erster Postfachname ist "+$boxList[0].name)

Sobald Sie den Namen des gewünschten Postfachs kennen, verwenden Sie einfach die Methode selectBox:

$boxInfo:=$transporter.selectBox($boxList[$boxId].name)

Dieser Befehl gibt nützliche Informationen zurück, wie zum Beispiel:

  • die Anzahl der E-Mails in der Mailbox
  • die Anzahl der letzten Nachrichten

E-Mail herunterladen

Sie haben zwei Möglichkeiten, die herunterzuladende E-Mail zu identifizieren:

  • Die erste ist, die Position der E-Mail im Postfach zu verwenden, genau wie bei POP3. Wenn Sie z. B. die zuletzt empfangene E-Mail herunterladen möchten:

$mail:=$transporter.getMail($boxInfo.mailCount)

  • Die zweite Möglichkeit ist die Verwendung des Attributs id des vom IMAP-Server zurückgegebenen E-Mail-Objekts. Diese Methode ist am besten geeignet, wenn Sie eine bestimmte E-Mail abrufen möchten, da die Position einer E-Mail im Postfach beim Löschen von E-Mails geändert werden kann:

$mail:=$transporter.getMail($emailId)

Wie wir bereits erwähnt haben, ist dies die erste Funktion für IMAP. Es wird noch mehr kommen. Bleiben Sie dran!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.