Php - citirea mesajelor prin imap sau pop3 - devenirea unui profesionist

Php - citirea mesajelor prin imap sau pop3 - devenirea unui profesionist

Este necesar să citiți e-mail utilizând protocoalele IMAP sau POP3,
permițându-vă să creați un client de mail pe bază de web.

Pentru a rezolva această problemă, trebuie să vă referiți la extensia PHP IMAP,






capabil să "vorbească" atât în ​​IMAP cât și în POP3:

// deschideți conexiunea IMAP
$ mail = imap_open ('', 'username', 'parola');
// sau deschideți o conexiune POP3
$ mail = imap_open ('', 'username', 'parola');

// faceți o listă cu toate anteturile de e-mail
$ anteturi = imap_headers ($ mail);

// preluați obiectul header pentru ultimul mesaj din cutia poștală
$ ultima = imap_num_msg ($ mail);
$ header = imap_header ($ mail, ultimul $);

/ / selectați corpul pentru același mesaj
$ body = imap_body ($ mail, ultimul $);

// închide conexiunea
imap_close ($ mail);

Biblioteca de bază de care are nevoie PHP pentru a sprijini
IMAP și POP3, oferă, la prima vedere, un număr infinit
oportunități, care, în esență, pot scrie o completă
mail client. Cu toate acestea, împreună cu aceste oportunități, avem o mai mare complexitate. De fapt, în PHP există 63 de diferite
cu nume care încep cu cuvântul imap, nu ia în considerare faptul că unii dintre ei înțeleg și limba POP3 și NNTP.

Cu toate acestea, conversația cu serverul de e-mail este simplă. Ca și în
Dacă utilizați multe alte funcții PHP, totul începe.
cu deschiderea conexiunii și cu capturarea descriptorului:

În acest caz, deschidem o conexiune IMAP la server după nume
mail.server.com pe portul 143. În același timp, numele de utilizator și parola sunt trecute ca al doilea și al treilea argument.

Pentru a deschide o conexiune POP3, adăugați / pop3 până la capăt
line cu numele serverului și numărul portului. POP3 de obicei funcționează
portul 110, deci după numele serverului pe care trebuie să-l adăugați: 110:

Pentru a cripta conexiunea utilizând SSL, adăugați / ssl
în final, la fel ca și cu pop3. De asemenea, este necesar să vă asigurați că instalarea PHP este construit cu opțiune de configurare -with-imap-ssl, în plus față de -withimap parametru. În plus, biblioteca sistemului IMAP însăși trebuie construită cu ajutorul SSL. Dacă utilizați un certificat auto-semnat și doriți să împiedicați încercările de autentificare nereușite, adăugați / novalidate-cert. în cele din urmă,






cele mai multe conexiuni SSL comunică fie prin portul 993, fie prin intermediul portului
portul 995. Toți acești parametri pot fi aranjați în orice ordine, prin urmare următoarea intrare are un drept complet de a exista:

Încheierea variabilei în bretele curl în interiorul unui șir în dublu
citate, de exemplu, este o modalitate de a spune PHP care unul exact
variabila ar trebui să fie interpolată. Prin urmare, pentru a transmite variabila interpolată ca primul parametru al funcției
imap_open (), convertiți deschiderea <в escapeпоследовательность:

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

$ mail = imap_open ("", "nume de utilizator", "parolă");
După ce ați deschis conexiunea, puteți să întrebați întrebările serverului de poștă electronică. O listă a tuturor mesajelor din căsuța poștală poate fi obținută prin apelarea funcției imap_headers ():

Se întoarce o matrice, fiecare element al căreia este a
șir formatat corespunzător mesajului:

Există, de asemenea, o modalitate alternativă de a prelua un mesaj care oferă funcțiile imap_header () și imap_body () pentru a extrage
capul de antet și linia corpului:

$ antet = imap_header ($ message_number);
$ corp = imap_body ($ număr de mesaj);

Funcția imap_header () returnează un obiect cu mai multe câmpuri. Cele mai utile dintre ele sunt subiecte, din domenii și domenii udate. Toate câmpurile sunt listate în Tabelul. 1.

Elementul corpului este pur și simplu un șir, dar dacă mesajul constă din mai multe părți, de exemplu, mesajul este prezentat sub forma unui simplu
text, și ca document HTML, elementul $ corp conține ambele versiuni ale MIME - liniile care le descriu:

- = _ Partea_1046_3914492.1008372096119
Tip de conținut: text / simplu; charset = us-ascii
Content-Transfer-Encoding: 7bit

- = _ Partea_1046_3914492.1008372096119
Tip de conținut: text / html
Content-Transfer-Encoding: 7bit

Mesaj HTML
- = _ Partea_1046_3914492.1008372096119-.

Pentru a evita acest lucru, apelați funcția imap_fetchstructure () în
combinații cu funcția imap_fetchbody (). Acest lucru va clarifica modul în care
corpul este formatat și extrage numai partea necesară:

// selectați textul pentru mesajul $ n
$ st = imap_fetchstructură ($ mail, $ n);
dacă (! gol ($ st-> părți))

pentru ($ i = 0, $ j = count ($ st-> parts), $ i <$j; $i++) $part = $st->părți [$ i];
dacă ($ part-> subtype == 'PLAIN')

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

Dacă mesajul constă din mai multe părți, atunci variabila $ st-> conține o serie de obiecte care le descriu. proprietate
partea conține o descriere MIME în întregime a tipului corpului principal.
În tabel. 1 prezintă numerele întregi și tipurile MIME corespunzătoare. Proprietatea subtipului conține un subtip MIME și arată care
tip se referă la această parte - plain, html, png sau la care?
de exemplu, fluxul octet.

Tabelul 1. Valori tip IMAP MIME







Trimiteți-le prietenilor: