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:
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!