Suche…


Installieren Sie die IMAP-Erweiterung

Um die IMAP-Funktionen in PHP verwenden zu können, müssen Sie die IMAP-Erweiterung installieren:

Debian / Ubuntu mit PHP5

sudo apt-get install php5-imap
sudo php5enmod imap

Debian / Ubuntu mit PHP7

sudo apt-get install php7.0-imap

YUM basierte Distribution

sudo yum install php-imap

Mac OS X mit PHP5.6

brew reinstall php56 --with-imap

Verbindung zu einer Mailbox herstellen

Um irgendetwas mit einem IMAP-Konto zu tun, müssen Sie zuerst eine Verbindung dazu herstellen. Dazu müssen Sie einige erforderliche Parameter angeben:

  • Der Servername oder die IP-Adresse des Mailservers
  • Der Port, an dem Sie eine Verbindung herstellen möchten
    • IMAP ist 143 oder 993 (sicher)
    • POP ist 110 oder 995 (sicher)
    • SMTP ist 25 oder 465 (sicher)
    • NNTP ist 119 oder 563 (sicher)
  • Verbindungsflags (siehe unten)
Flagge Beschreibung Optionen Standard
/service=service Welchen Dienst verwenden? imap, pop3, nntp, smtp Imap
/user=user Remote-Benutzername für die Anmeldung am Server
/authuser=user Remote-Authentifizierungsbenutzer; falls angegeben, ist dies der Benutzername, dessen Passwort verwendet wird (zB Administrator)
/anonymous Fernzugriff als anonymer Benutzer
/debug Protokollieren Sie die Telemetrie im Debug-Protokoll der Anwendung deaktiviert
/secure Übertragen Sie kein Klartext-Passwort über das Netzwerk
/norsh Verwenden Sie nicht rsh oder ssh, um eine vorauthentifizierte IMAP-Sitzung einzurichten
/ssl Verwenden Sie Secure Socket Layer, um die Sitzung zu verschlüsseln
/validate-cert Zertifikate vom TLS / SSL-Server aktiviert
/novalidate-cert Überprüfen Sie keine Zertifikate vom TLS / SSL-Server. Dies ist erforderlich, wenn der Server selbstsignierte Zertifikate verwendet. VERWENDUNG MIT VORSICHT deaktiviert
/tls Erzwinge die Verwendung von start-TLS, um die Sitzung zu verschlüsseln, und lehne die Verbindung zu Servern ab, die sie nicht unterstützen
/notls Verwenden Sie nicht start-TLS, um die Sitzung zu verschlüsseln, auch wenn die Server dies unterstützen
/readonly schreibgeschütztes Postfach anfordern (nur IMAP; bei NNTP ignoriert und bei SMTP und POP3 ein Fehler)

Ihre Verbindungszeichenfolge sieht ungefähr so ​​aus:

{imap.example.com:993/imap/tls/secure}

Wenn eines der Zeichen in Ihrer Verbindungszeichenfolge Nicht-ASCII-Zeichen ist, muss es mit utf7_encode ($ string) codiert werden.

Um eine Verbindung zum Postfach herzustellen , verwenden wir den Befehl imap_open, der einen Ressourcenwert zurückgibt, der auf einen Stream zeigt:

<?php
$mailbox = imap_open("{imap.example.com:993/imap/tls/secure}", "username", "password");
if ($mailbox === false) {
    echo "Failed to connect to server";
}

Alle Ordner in der Mailbox auflisten

Sobald Sie sich mit Ihrer Mailbox verbunden haben, möchten Sie einen Blick darauf werfen. Der erste nützliche Befehl ist imap_list . Der erste Parameter ist die Ressource, die Sie von imap_open erworben imap_open , der zweite ist Ihre Mailbox-Zeichenfolge und der dritte ist eine unscharfe imap_open ( * wird verwendet, um ein Muster zu finden).

$folders = imap_list($mailbox, "{imap.example.com:993/imap/tls/secure}", "*");
if ($folders === false) {
    echo "Failed to list folders in mailbox";
} else {
    print_r($folders);
}

Die Ausgabe sollte ähnlich aussehen

Array
(
    [0] => {imap.example.com:993/imap/tls/secure}INBOX
    [1] => {imap.example.com:993/imap/tls/secure}INBOX.Sent
    [2] => {imap.example.com:993/imap/tls/secure}INBOX.Drafts
    [3] => {imap.example.com:993/imap/tls/secure}INBOX.Junk
    [4] => {imap.example.com:993/imap/tls/secure}INBOX.Trash
)

Mit dem dritten Parameter können Sie diese Ergebnisse folgendermaßen filtern:

$folders = imap_list($mailbox, "{imap.example.com:993/imap/tls/secure}", "*.Sent");

Und jetzt enthält das Ergebnis nur Einträge mit .Sent im Namen:

Array
(
    [0] => {imap.example.com:993/imap/tls/secure}INBOX.Sent
)

Hinweis : Wenn Sie * als Fuzzy-Suche verwenden, werden alle Übereinstimmungen rekursiv zurückgegeben. Wenn Sie % , werden nur Übereinstimmungen im aktuellen Ordner zurückgegeben.

Nachrichten im Postfach suchen

Sie können eine Liste aller Nachrichten in einem Postfach mit imap_headers zurückgeben .

<?php
$headers = imap_headers($mailbox);

Das Ergebnis ist ein Array von Strings mit dem folgenden Muster:

[FLAG] [MESSAGE-ID])[DD-MM-YYY] [FROM ADDRESS] [SUBJECT TRUNCATED TO 25 CHAR] ([SIZE] chars)

Hier ist ein Beispiel, wie jede Zeile aussehen könnte:

A     1)19-Aug-2016 [email protected] Message Subject (1728 chars)
D     2)19-Aug-2016 [email protected] RE: Message Subject (22840 chars)
U     3)19-Aug-2016 [email protected] RE: RE: Message Subject (1876 chars)
N     4)19-Aug-2016 [email protected] RE: RE: RE: Message Subje (1741 chars)
Symbol Flagge Bedeutung
EIN Antwortete Auf die Nachricht wurde geantwortet
D Gelöscht Nachricht wird gelöscht (aber nicht entfernt)
F Gekennzeichnet Die Nachricht wird zur Beachtung markiert
N Neu Nachricht ist neu und wurde noch nicht gesehen
R Kürzlich Nachricht ist neu und wurde gesehen
U Ungelesen Nachricht wurde nicht gelesen
X Entwurf Nachricht ist ein Entwurf

Beachten Sie, dass dieser Aufruf eine längere Zeit in Anspruch nehmen kann und eine sehr große Liste zurückgibt.

Alternativ können Sie einzelne Nachrichten nach Bedarf laden. Ihren E-Mails wird jeweils eine ID von 1 (die älteste) für den Wert von imap_num_msg($mailbox) .

Es gibt eine Reihe von Funktionen, um direkt auf eine E-Mail zuzugreifen. Die einfachste Methode ist die Verwendung von imap_header die strukturierte Headerinformationen zurückgibt:

<?php
$header = imap_headerinfo($mailbox , 1);

stdClass Object
(
    [date] => Wed, 19 Oct 2011 17:34:52 +0000
    [subject] => Message Subject
    [message_id] => <04b80ceedac8e74$51a8d50dd$0206600a@user1687763490>
    [references] => <[email protected]>
    [toaddress] => Some One Else <[email protected]>
    [to] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One Else
                    [mailbox] => someonelse
                    [host] => example.com
                )
        )
    [fromaddress] => Some One <[email protected]>
    [from] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One
                    [mailbox] => someone
                    [host] => example.com
                )
        )
    [reply_toaddress] => Some One <[email protected]>
    [reply_to] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One
                    [mailbox] => someone
                    [host] => example.com
                )
        )
    [senderaddress] => Some One <[email protected]>
    [sender] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One
                    [mailbox] => someone
                    [host] => example.com
                )
        )
    [Recent] =>  
    [Unseen] =>  
    [Flagged] =>  
    [Answered] =>  
    [Deleted] =>  
    [Draft] =>  
    [Msgno] =>    1
    [MailDate] => 19-Oct-2011 17:34:48 +0000
    [Size] => 1728
    [udate] => 1319038488
)


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow