Empfangen von E-Mails mit POP3-Protokoll

Mit 4D v18 wurde eine neue, benutzerfreundliche und leistungsstarke Methode zum Erstellen und Versenden von E-Mails eingeführt. So können Sie mit nur wenigen Zeilen Code aufmerksamkeitsstarke E-Mails auf HTML-Basis (mit Bildern, Videos und Anhängen) versenden. In 4D v18 R2 haben wir die Möglichkeit hinzugefügt, Ihre E-Mails lokal herunterzuladen und von Ihrem E-Mail-Server zu entfernen. In diesem Blogbeitrag gehen wir auf die neuen Möglichkeiten ein, die sich daraus ergeben.

Der neue POP3 New transporter Befehl ermöglicht Ihnen die Verwendung des POP3-Protokolls zur Verwaltung von E-Mails. Das Post Office Protocol (POP) ist ein Standardprotokoll zum Abrufen von E-Mails von einem Mailserver. Es ist nützlich für Aktionen wie das Herstellen einer Verbindung zu einem POP3-Server, das Abrufen von Nachrichten, um sie automatisch zu verarbeiten und/oder in Ihrer lokalen Datenbank zu speichern, und das Löschen von Nachrichten vom Server.

Herunterladen von HDI POP3-Postfächern

Erstellen Sie einen pop3-Transporter

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

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

Mail-Informationen

Sie können Informationen über alle Nachrichten in Ihrer Mailbox mit der getMailInfoList() Methode Ihres POP3-Transporter-Objekts. Die zurückgegebene Liste enthält insbesondere eine Nachrichtennummer, die jede E-Mail während der POP3-Transaktion identifiziert:

$mailInfos:=$POP3 transporter.getMailInfoList()

Wenn Sie nur Informationen für eine einzelne Nachricht benötigen, können Sie auch die getMailInfo() Methode verwenden … übergeben Sie einfach die Nachrichtennummer als Parameter:

$mailInfo:=$POP3 transporter.getMailInfo($mailNumber)

E-Mail empfangen

Sie können alle Nachrichten oder bestimmte Nachrichten mit der getMail() Methode herunterladen. Um eine bestimmte Nachricht herunterzuladen, übergeben Sie einfach die Nachrichtennummer, die von getMailInfoList() als Parameter an diese Methode. Das folgende Beispiel zeigt, wie Sie alle Nachrichten in Ihrer Mailbox herunterladen können:

$mailInfos:=$POP3 transporter.getMailInfoList()
$mails :=New collection
For each ($mail;$mailInfos)
// Download email
$mails . push($transporter.getMail($mail.number))
End for each

E-Mail löschen

Sie können eine Nachricht markieren, die beim Schließen der Sitzung mit der Methode delete() Methode. Auf die gleiche Weise wie bei der getMail() Methode, übergeben Sie die von der Methode getMailInfoList() als Parameter. Wenn Sie zum Beispiel alle Nachrichten in Ihrem Postfach herunterladen und löschen möchten:

$mailInfos:=$POP3 transporter.getMailInfoList()
For each ($mailInfo;$mailInfos)
// Download email
ProcessMail ($POP3 transporter.getMail($mailInfo.number))

// Flag messages "to be deleted at the end of the session"
. ( . ) $POP3 transporterdelete$mailInfonumber
End for each

// Force the session closure to delete the messages flagged for deletion
$POP3 transporter:=Null

Mailbox-Informationen

Sie können die Anzahl der E-Mails in Ihrem Postfach und die Größe des Postfachs mit der getBoxInfo() Methode:

$boxInfo:=$POP3 transporter.getBoxInfo()
ALERT ("Größe: "+String($boxInfo.size)+" - Anzahl: "+String($boxInfo.mailCount))

Log-Transaktion

Wie bei den SMTP-Protokollen können Sie alle Ihre POP3-Transaktionen protokollieren. Es gibt zwei Möglichkeiten, Ihr Protokoll zu erstellen:

  • Führen Sie ein POP3 Log auf dem Server aus – klicken Sie auf die Schaltfläche „Start Request and Debug Logs“ auf Ihrem 4D Server
  • Eine bestimmte Transaktion protokollieren (z. B. während der Fehlersuche) – verwenden Sie die logFile Eigenschaft des POP3-Transporter-Objekts:

$server.host:="yourpop3server.com"
$server .user:="login"
$server .password:="psw"
// Enter the path of the log file you want to create
$server .logFile:="C:\\tmp\\POP3Log.txt"
$transporter :=POP3 New transporter($server)

Sie können alle diese Befehle mit dem obigen HDI testen.

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.