Php sendmail pentru a trimite e-mail cu atașamente prin php - web blog-dezvoltator koz1024

În acest articol vreau să vă spun cum să trimiteți e-mail cu atașamente, folosind standardul PHP, fără biblioteci PEAR, și altele asemenea.

Să începem cu elementele de bază. Trimiterea de e-mail în PHP este executat prin funcții de mail:

În forma sa cea mai simplă se pare ca acest lucru:

În cazul în care rezultatul script-ul va vysheprevedennogo eroare, astfel încât în ​​configuratia PHP nu are suport pentru e-mail, te sfătuiesc să contactați administratorul.

Acum vom înțelege cu antete suplimentare. Că, în general, un astfel de titlu scrisoare? Acest lucru, în conformitate cu standardul RFC-822, una dintre piesele de poștă electronică. Adică, scrisoarea constă dintr-un antet și corp (și, de asemenea, din „plic“, dar că acum nu trebuie să). Titlul este întotdeauna în fața corpului și separat de acesta printr-o linie goală. Antetul este format dintr-un nume și conținutul separate prin două puncte. Fiecare alte antete sunt împărțite după cum urmează: fiecare titlu începe pe o linie nouă. Dar, este mai bine să se uite la un exemplu:

Trimiterea de scrisori către HTML-format

Cele mai multe dintre sarcinile de mai sus script-ul, trimiterea mail`ov suficient, dar vom merge mai departe și să învețe cum să trimită e-mail-uri în HTML-format. Acest lucru este, de asemenea, nu e mare lucru:

Și, de asemenea, rețineți că secvența de evacuare-(și anume așa-numitul proiect de tip \ r \ n) funcționează numai cu ghilimele duble!
Ce este nou în acest scenariu? Ei bine, în primul rând, ne-am indicat în tipul de conținut antetele (HTML) și caracterul. În al doilea rând, doar corpul pe care doriți să scrie cod html. E simplu!

Trimiterea de mesaje cu atașamente

Aici ne apropiem de trimiterea de e-mailuri cu fișiere atașate în PHP.

E complicat? Nu este adevărat, să se ocupe. Pentru început, am creat un identificator unic $ ONU, cu ajutorul lui vom putea împărtăși cu reciproc fișierele atașate, precum și corpul mesajului. În continuare, am citit conținutul fișierului inclus și îl stochează în fișierul $ variabila.

Dar există o trimit? Titlurile vom specifica tipul de conținut și separatorul nostru unic (Content-Type :. multipart / alternativă;. = Limita "----------" $ ONU ""). Iar în corpul e-mailului, schimbul de separator, mai întâi scrie textul, apoi fișierul atașat:

Scrierea în mod natural care indică un tip de conținut (Content-Type) și tipul de conversie (Content-Transfer-Encoding).
chunk_split (base64_encode (fișier $)) - este fișierul nostru de atașament (amintiți-vă, avem un conținut de $ fișier variabilă?) de pre-converti în base64

Funcția Gata de a trimite e-mail cu un atașament

În cazul în care cititorul pacientul va citi până la acest punct, aici este o funcție universală de a trimite mail cu un atașament:

Cu cunoștințele dobândite, puteți obține cu ușurință în activitatea funcției. Sper că este util!

Trimiterea de email-uri în format HTML cu imagini

Am vrut să scriu această secțiune imediat după „trimiterea unei scrisori în HTML-format“, și ar fi logic. Dar. Secțiunea ar face o foarte greoaie, în timp ce profitând de funcțiile le-am descris mai sus, puteți transfera cu ușurință mesaje în format HTML și chiar și cu imagini. Permiteți-mi să spun doar că imaginile însele au o parte yavlyatsya a codului HTML, ci se referă la ele - cid utilizate - identificator

Ai găsit ceea ce căutați? Da Nu

„Funcția Gata de a trimite e-mail cu un atașament,“ Fișierul nu este atașat la scrisoarea ca un fișier și se duce la corpul e-mail în text simplu

AntonMMF. și toți cei care utilizează funcția: pentru a păstra fișierul de ieșire în corpul mesajului, elimina pauzele dublu rând „\ r \ n \ r \ n“ (înlocuiți cu un singur), și să încerce să scrie toate anteturile într-o singură linie, și întregul corp într-o singură linie I, din păcate, nu pot acum, dar mai târziu este sigur de a tinkering in articol pentru a arăta modul în care este necesar. AntonMMF. Vă mulțumesc observat!

Doar în timp) Vă mulțumesc.

Vă mulțumim pentru scenariul. Dar am un motiv sau altul scrisoarea vine în e-mail.

Nezabudka. Motivele pot fi multe: de la serverul de configurare la punctul de tratate în mod adecvat; trebuie să te uiți, să înțeleagă că într-un anumit caz, dumneavoastră

Content-Type scrisorii ar trebui să fie multipart / mixt, și nu alternativă. Alternativa este utilizată în cazul în care scrisoarea conține un număr de reprezentări diferite ale aceleași. De exemplu, clienții de e-mail atunci când trimiterea HTML-e-mailuri includ adesea o versiune text simplu din aceeași literă. În acest scop, un mesaj de tipul multipart / alternative, și o parte a tipurilor de text / plain, text / html. client de e-mail de pe partea de primire care înțelege HTML, arată conținutul de tip text / html, iar în cazul în care se dovedește că plicului este vechi și nu înțelege HTML (sau un utilizator oprit), se va folosi o parte din tipul de text / plain.

Este interesant, dar sistemul ia în considerare doar primul titlu din "De la: [email protected] \ r \ n-tip de conținut: text / html; charset = utf-8 \ r \ n X-Mailer: PHP script-mail", nu contează, care parametrul primul set. Urmând exemplul expus în mod corect „de la“, dar textul formatul de scrisoare