Php - az e-mailek olvasása imap vagy pop3 használatával - pro

Php - az e-mailek olvasása imap vagy pop3 használatával - pro

A leveleket az IMAP vagy POP3 protokollok segítségével kell olvasni,
lehetővé téve a levelezőprogram létrehozását webalapú alapon.

A probléma megoldásához meg kell említeni a PHP IMAP kiterjesztését,
képes beszélni mind IMAP-ban, mind POP3-ban:

// nyissa meg az IMAP kapcsolatot
$ mail = imap_open ('', 'felhasználónév', 'jelszó');
// vagy nyissa meg a POP3 kapcsolatot
$ mail = imap_open ('', 'felhasználónév', 'jelszó');

/ / vegyen fel egy listát az összes e-mail fejlécről
$ headers = imap_headers ($ mail);

// vegye át a fejlécobjektumot a postaládában lévő utolsó üzenethez
$ last = imap_num_msg ($ mail);
$ header = imap_header ($ mail, utolsó $);

// válassza ki a testet ugyanarra az üzenetre
$ body = imap_body ($ mail, utolsó $);

// szoros kapcsolat
imap_close ($ mail);

Az alapul szolgáló könyvtár, amelyet a PHP-nek támogatnia kell
IMAP és POP3, első pillantásra egy végtelen számot kínál
lehetőségeket, amelyek lényegében teljes egészét írhatják
mail klienst. Azonban ezen lehetőségek mellett egyre összetettebbé válik. Valójában PHP-ben 63 különböző
az imap szóval kezdődő nevek funkcióit, nem veszi figyelembe, hogy néhányan a POP3 és az NNTP nyelvét is megértik.

A levélkiszolgálóval való beszélgetés azonban alapvetően egyszerű. Mint a
Ha sok más PHP-funkciót használ, mindent elindít.
a kapcsolat megnyitásával és a leírás lefoglalásával:

Ebben az esetben egy szerverre IMAP kapcsolatot nyitunk név szerint
mail.server.com a 143. porton. Ugyanakkor a felhasználónév és a jelszó a második és harmadik argumentumként kerül átadásra.

A POP3-kapcsolat megnyitásához add / pop3-ot kell felvenni
sor a szerver nevével és a port számával. A POP3 általában működik
port 110, tehát a kiszolgáló nevének hozzáadásához: 110:

A kapcsolat SSL használatával történő titkosításához add / ssl
a végén ugyanúgy, mint a pop3-mal. Arra is szükség van, hogy megbizonyosodjon arról, hogy a PHP épül konfigurációs beállítás -A-imap-ssl, ráadásul -withimap paramétert. Ezenkívül az IMAP rendszermagot magát SSL támogatással kell felépíteni. Ha ön használ egy saját maga által aláírt igazolást, és el akarja kerülni sikertelen ellenőrizze annak hitelességét, hozzáadhat és / novalidate-cert. végül
a legtöbb SSL kapcsolat kommunikál a 993-as vagy a 99-es porton keresztül
995-ös portot. Mindezeket a paramétereket bármilyen sorrendben rendezhetjük, ezért a következő bejegyzés teljes joggal rendelkezik:

A változó lezárása göndör zárójelben kétszálon belül
például idézetek egy módja annak, hogy megmondja a PHP-nek, melyik pontosan
a változót interpolálni kell. Ezért az interpolált változót a függvény első paraméterének adja meg
imap_open (), konvertálja a nyitást <в escapeпоследовательность:

$ server = 'mail.server.com';
$ port = 993;

$ mail = imap_open ("", "felhasználónév", "jelszó");
Miután megnyitotta a kapcsolatot, megkérheti a levélkiszolgáló kérdéseit. A postaládában lévő összes üzenet listája az imap_headers () függvény hívásával érhető el:

Visszaad egy tömböt, amelynek minden eleme a
az üzenetnek megfelelő formázott karakterlánc:

Van egy másik módja annak a üzenetnek a lekérésére, amely az imap_header () és imap_body () függvényeket kiszedi
objektum fejléc és testvonal:

$ header = imap_header ($ message_number);
$ body = imap_body ($ message_number);

Az imap_header () függvény egy több mezőt tartalmazó objektumot ad vissza. A leghasznosabb ezek közül a tárgyak, a címek és a mezők. Az összes mezőt a táblázat tartalmazza. 1.

A testelem egyszerűen egy húr, de ha az üzenet több részből áll, például az üzenet egyszerű formában jelenik meg
szöveget és HTML-dokumentumot tartalmaz, a $ testelem a MIME mindkét verzióját tartalmazza, az azokat leíró vonalakat:

- = _ Part_1046_3914492.1008372096119
Tartalom-típus: szöveg / egyszerű; charset = us-ascii
Tartalom-átvitel-kódolás: 7 bit

- = _ Part_1046_3914492.1008372096119
Tartalom-típus: szöveg / html
Tartalom-átvitel-kódolás: 7 bit

HTML üzenet
- = _ Part_1046_3914492.1008372096119-.

Ennek elkerülése érdekében hívja be az imap_fetchstructure () függvényt
kombináció az imap_fetchbody () függvénnyel. Ez egyértelművé teszi, hogyan
a test formázott, és kivonja csak a szükséges részt:

// válassza ki a $ n üzenet szövegét
$ st = imap_fetchstructure ($ mail, $ n);
ha (! empty ($ st-> részek))

mert ($ i = 0, $ j = count ($ st-> rész), $ i <$j; $i++) $part = $st->részek [$ i];
ha ($ part-> altípus == 'PLAIN')

$ body = imap_fetchbody ($ mail, $ n, $ i + 1);
>
>
> else $ body = imap_body ($ mail, $ n));
>

Ha az üzenet több részből áll, akkor a $ st-> változó egy olyan tömböt tartalmaz, amely leírja azokat. tulajdon
A rész tartalmazza a fő törzs típusának MIME leírását.
A táblázatban. Az 1. ábra az egész számokat és a hozzájuk tartozó MIME-típusokat mutatja. Az altípus tulajdonság egy MIME altípust tartalmaz, és megmutatja, hogy melyik
típus utal erre a részre - egyszerű, html, png vagy amelyhez?
például az oktet-stream.

1. táblázat: IMAP MIME típusú értékek