IMAP mit PHP

Wenn man einmal in die schöne Situation kommt, IMAP Programmierung mit PHP durchführen zu dürfen der wundert sich. Funktionen ergeben keinen Sinn oder werfen seltsame Fehler.

Ich möchte hier ein paar Tipps geben, mit denen man diesen Graus etwas vereinfachen kann. Ich habe jedoch festgestellt, das viele Informationen stark von dem Mailserver abhängen. Teilweise waren php.net Kommentare in meinem Fall falsch oder widersprüchlich.

Mails verschieben mit PHP

Um Mails zu verschieben brauchen wir einen IMAP Handler $imap der von imap_open() zurückgegeben wird.
Der zweite Parameter die Message-Number bekommen wir entweder von einer for-Schleife die die E-Mails durchläuft. Oder von imap_header() und deren Eigenschaft „Msgno“.

Sehr wichtig ist es danach imap_expunge() aufzurufen, da das die Änderungen anscheinend erst anwendet.
Ein weiterer Tipp, falls es nicht klapp, ist es anstatt eines Punktes als Ordnertrennzeichen einen Slash zu benutzen. Der 3.Parameter würde im Beispiel dann INBOX/archive lauten.

imap_mail_move($imap , $header->Msgno, "INBOX.archive");
imap_expunge($imap);

Mails löschen

Mails löschen, ähnelt sehr dem Vorgehen bei Mails verschieben (siehe oben).
Zuerst setzen wir eine Flag, wofür keine Ahnung, aber sie scheint nötig. 🙂 Dafür benutzen wir die Funktion imap_setflag_full
Die braucht von uns nur die Message-Number, (hier $header->Msgno) und selbstverständlich den IMAP Handle.
Nachdem wir die Mail geflaggt haben, können wir sie nun mit der Funktion imap_mail_delete() löschen, die als Parameter die Message-Number braucht. Wie man diese bekommt, habe ich bereits oben beschrieben.

Zum Ende hin benutzen wir wieder imap_expunge(), was die Änderungen anwendet.

Tipp: Falls euer Code E-Mails löscht, testet endweder mit Productionbedingungen oder kommentiert das Löschen aus und testet erst den anderen Teil.

imap_setflag_full($imap, str_replace(' ', '', $header->Msgno), "\\Deleted");
imap_delete($imap, $header->Msgno);

imap_expunge($imap);

Ausschau: In den nächsten paar Tagen, werde ich einen weiteren Artikel um das IMAP Thema behandeln und zwar das Speichern von E-Mail Anhängen.

Ich bin Kevin, und schreibe hier über Themen die sich von CSS über Designs bis zur testgetriebenen Entwicklung mit PHP erstrecken. Ich arbeite in einer kleinen Firma als PHP-Entwickler und entwickle dort PHP Backends für verschiedene Projekte vorallem mit Laravel. Privat betreibe ich noch diesen Blog und notesafe.

Schreibe einen Kommentar