instrucțiuni detaliate despre Mailer php - cms sesmik magazin online la cheie

Standard de e-mail - este text simplu, care este utilizat de majoritatea dezvoltatorilor, creând astfel un antet MIME pentru email-uri HTML poate fi un proces complicat. Acum nu va primi nici o dificultate, pentru că aveți o bibliotecă PHPMailer minunată, care, de altfel, este liber.

In acest tutorial vom discuta în detaliu caracteristicile și capacitățile acestei biblioteci.

cerinţe

Cerințe în această bibliotecă sunt foarte modeste. Ai nevoie doar de PHP și capacitatea de a trimite e-mailuri înseamnă e-mail () de comandă sau printr-o conexiune SMTP.

De asemenea, ar trebui să înțeleagă elementele de bază ale programării orientate-obiect (OOP), sau, cel puțin, pentru a înțelege cum să aplice aceste exemple următoare.

Nu-ți face griji! Acest curs este destul de simplu!

Despre PHPMailer

Ce poate PHPMailer

La momentul scrierii acestui curs de formare PHP Mailer a fost capabil să:

dezvoltatorii PHPMailer

  • Brent R. Matzelle
  • patrice Fournier
  • chris Ryan
  • cem Hurturk
  • tom Klingenberg
  • jaime Bozza

Îmi exprim recunoștința față de acești oameni, pentru că ei au făcut atât de mult pentru a accelera dezvoltarea de proiectele mele, inclusiv PHPFreaks.com!

Ne pregătim să folosească PHPMailer

Descărcați și dezarhivați

Acum, că toate fișierele din loc, să creeze un fișier de configurare a proiectului nostru.

Crearea și utilizând fișierul de configurare

Unul dintre principalele lucruri pe care le place să fac înainte de a crea site-ul - este de a scrie fișierul de configurare, acesta va conține setările pe care le-ar putea, mă voi referi mai multe ori. Și astfel, am crea un fișier numit config.php în /home/mywebsite/public_html/config.php. Vnem a crea un array numit site-ul $ cu cheile și valorile mele, pe care le voi folosi în viitor. In acest tutorial voi descrie variabilele pe care le vom utiliza în PHPMailer clasă. Iată un exemplu de fișier meu config.php:

Acest exemplu este foarte simplu să-l explice. În continuare, vom continua munca noastră și vom lua aceste setări după cum este necesar.

Creați o clasă care se extinde PHPMailer

Imediat, subliniez că trebuie să creați o clasă de extensie, acesta va simplifica viața ta, atunci îți voi arăta cum.

Fiecare dintre acești parametri este luat în mod implicit din fișierul config.php. dar, de asemenea, puteți suprascrie-le atunci când apelați clasa noastră de extensie. Astfel, dacă nu trece peste niciuna dintre setările din clasa de extensie, acesta va fi luat din dosar defaul config.php. și nu aveți nevoie de fiecare dată pentru a trece peste aceste setări. Asta e frumusețea acestei abordări!

Aruncati o privire la clasa noastră extensie:

În continuare ne uităm la codul.

Să considerăm clasa FreakMailer

Clasa noastră, prezentat mai sus, este foarte simplu. Și trebuie doar să aibă o bază competențe OOP să-l folosească. Să recunoaștem.

În primul rând, avem nevoie pentru a conecta clasa PHPMailer (fișierul class.phpmailer.php în directorul lib). Acest lucru ne permite să extindă PHPMailer de clasă, deoarece face obiectul disponibil. Ai putea conectați-l în altă parte, dar aici este cel mai eficient.

Structura controlului clasei

În continuare, vom defini structura de clasă de management și dau un nume cu extensie a PHPMailer de clasă.

variabile ale clasei

Dă-i drumul. Acum definim variabilele interne. Cele mai multe dintre ele sunt setate defaul la NULL. astfel încât mai târziu să le putem trece peste dacă există necesitatea de a înlocui valorile setate din config.php.

Să ia în considerare aceste variabile:

După definirea variabilelor, putem discuta cu tine FreakMailer funcția ().

FreakMailer () funcția

Această caracteristică este în principal, stabilește valorile inițiale pentru PHPMailer de clasă, pentru a trimite e-mail.

În primul rând, noi numim $ site-ul matrice a fișierului config.php. pentru a putea să-l folosească în funcția dată și clasă. Pentru a face acest lucru, există două moduri: de a trece o matrice atunci când apelați pentru a face o serie de clasă sau la nivel mondial. Această din urmă metodă este cea mai ușoară, și funcționează, așa că și de a folosi!

Toate acțiunile în continuare - este în principal definirea valorilor variabilelor de clasa PHPMailer. Dacă variabila internă ($ this-> setare) nu este definită, vom lua valori din fișierul config.php. Am menționat deja că puteți suprascrie valorile din config.php. Aici vom verifica.

Cel mai important lucru pe care trebuie să înțeleagă este faptul că toate oportunitățile PHPMailer sunt încă prezente și pot fi utilizate, în ciuda faptului că l-am extins. Singurul lucru pe care am făcut-o aici - a creat o extensie care se asigură că nu a trebuit să intre de fiecare dată când unul și același date atunci când vrem să trimită un mesaj.

Acum, că avem o înțelegere suficientă a clasei de extindere, să încercăm să trimită e-mail!

trimiterea de mijloace de e-mail PHPMailer

Lucrările preliminare se face, iar acum avem toate pentru a trimite scrisori înseamnă PHPMailer.

test inițial

Acest test este foarte important, deoarece în acest articol vom veni mereu înapoi la codul dat aici. În cazul în care codul aveți nu funcționează, re-citit materialul prima și apoi încercați din nou. Primul nostru exemplu, vom păstra în fișierul mailtest.php. care este pus în rădăcina proiectului nostru. Iată conținutul:

Să ne uităm la codul pentru o mai bună înțelegere a acesteia.

În primul rând, ne conectam fișierul nostru de configurare pentru a avea acces la un $ site-matrice.

Apoi, conectați clasa FreakMailer.

Acum, avem nevoie pentru a inițializa clasa noastră de extensie, și PHPMailer de clasă.

PHPMailer este acum gata și ne mișcăm mai departe.

Dacă utilizați litera ca text simplu, este necesar să se împartă linia sau. Și trebuie să utilizați ghilimele duble în determinarea variabila $ mailer-> Trupului. Dacă utilizați ghilimele simple, ambalajul text de la o linie la alta este posibilă cu cheia.

Apoi, trimite un mesaj, și trata erorile dacă este cazul.

În cazul unei erori - veți vedea mesajul „Nu se poate trimite o scrisoare!“, Altfel - „Scrisoarea trimisă!“.

Dacă ați primit doar un mesaj pe care ați trimis folosind PHPMailer, - felicitări!

Principalele probleme

Aici este o listă a unor probleme (tipice) pe care le poate avea atunci când trimite e-mail folosind PHPMailer (cel mai probabil, au apărut aceste probleme și ar fi, în administrarea obișnuită a literelor):

  • pe mașina dumneavoastră nu este instalat sau nu se execută orice server SMTP;
  • setări incorecte în cadrul unui script PHP, citește din nou curs de formare;
  • serverul Apache nu permite transmiterea prin intermediul unui server SMTP pe mașina locală (cazul tipic);
  • nu identifică corect literele destinatarului.

Dar, dacă îl aveți de lucru, să trecem la trimiterea de scrisori cu caracteristici specifice.

Utilizarea funcțiilor avansate PHPMailer

Dacă sunteți deja aici, dar nu citesc cu materialul anterior - du-te înapoi și să citească, pentru că aici ne vom ocupa de extinderea exemplului de bază.

Amintiți-vă că ne bazăm pe exemplul de bază de mai sus.

În cazul în care nu specifica FROMNAME, majoritatea clienților de e-mail se va substitui numele de e-mail.

Adăugarea de mai mulți destinatari

Această metodă vă permite să adăugați mai mulți destinatari la scrisoarea. Nu recomand această metodă pentru liste de adrese anonime. A se vedea exemplul pentru lista de distribuție ulterioară.

Adăugați destinatari copie exactă (CC)

Puteți adăuga destinatari replica exact în același mod ca și exemplele anterioare, folosind funcția AddCC.

Adăugarea de destinatari oarbe copie exactă (CCA)

Invizibil destinatar CCA sau pot fi adăugate folosind următoarea funcție:

Cererea pentru confirmarea lecturii

Dacă doriți să cereți persoanei citind scrisoarea, confirmare de citire, să prezinte următoarea comandă:

Trimite scrisori vvide HTML folosind PHP si PHPMailer

Formarea de email-uri HTML - aceasta este una dintre cele mai dificile sarcini atunci când trimiterea de e-mail folosind PHP. Setarea antetele MIME și de a construi HTML - nu este o sarcină ușoară și necesită cunoștințe și cercetări suplimentare. Cu toate acestea, PHPMailer va face viața mai ușoară, atunci, vom arăta modul în care aceasta este pusă în aplicare.

Notă importantă pe mail HTML vvide

Înainte de a proceda la trimiterea unor astfel de scrisori, aș dori să înțelegeți că este important să știți despre imagini cum să fie conectate și stiluri de CSS, etc. O regulă simplă este de a stoca aceste fișiere pe server, și într-o scrisoare de referință pentru a da pe deplin. Dacă te duci traistă și adăugați aceste fișiere la scrisoarea, apoi gata pentru o durere de cap. De exemplu, corpul meu mesaj arata ca acest lucru:

După cum puteți vedea, am făcut o adresă URL completă, mai degrabă decât a redus pe documentul meu. Dacă nu, imaginile nu vor fi încărcate și utilizatorul nu le va vedea!

Du-te înainte, acum avem nevoie pentru a trimite scrisoarea noastră. Pentru a face acest lucru, avem nevoie pentru a identifica corpul scrisorii noastre și cere setările isHTML. Următorul exemplu se extinde exemplul inițial de bază.

litere „corp“ Extra

Nu vă bazați niciodată exclusiv pe HTML la trimiterea de e-mailuri în cazul în care mesajul este foarte important. Trebuie să aibă grijă de destinatar, și în plus față de e-mail HTML și atașați numai versiunea numai text (numai text) a mesajului, deoarece unii clienți de e-mail nu poate afișa email-uri HTML. Putem realiza acest efect prin adăugarea de scrisori suplimentare la funcția corpului de clasă AltBody PHPMailer. Să adăugați o versiune text a mesajului. De îndată ce vom adăuga câteva litere ale organelor - PHPMailer generează în mod automat e-mail multi-stratificat.

Atașarea fișierelor la litera

Funcția AddAttachment are 4 argumente:

Calea către fișierul, desigur, calea completă către fișierul de pe disc, numele fișierului - numele fișierului pe care doriți să îl atașați, de codificare - defaul base64, tipul de titlu - este tipul de antet pe care doriți să trimiteți - defaul - application / octet-stream.

După cum puteți vedea, totul este foarte simplu! Hai să vă să utilizați SMTP.

Utilizarea unui SMTP extern (lor) pentru e-mail mijloace PHP

În primul rând, să ne discuta despre utilizarea unui extern în loc de SMTP locale. În exemplul de bază noi suntem făcuți config.php. care a stabilit unele opțiuni pentru serverul SMTP. Dacă doriți să adăugați mai multe servere SMTP - puteți face acest lucru extins, de asemenea, config.php. site-ul de setare $ [ 'smtp_enabled'] = 'activat'; (Inclusiv).

Site-ul $ [ „smtp_host“] vă puteți extinde lista de servere SMTP, separându-le cu punct și virgulă. De exemplu:

După cum am înțeles, încerc PHPMailer pentru a trimite e-mail prin serverul în primul rând, în cazul în care nu reușește - prin al doilea, și așa mai departe.

Notă importantă, pentru a vă atrage atenția că, pentru a trimite email-uri prin SMTP nu trebuie să utilizați Trimitere standard) funcția (. și SMTPSend () funcția. De exemplu:

Probleme legate de trimiterea prin SMTP

Există mai multe variante de erori atunci când se utilizează SMTP, în principiu, toate acestea se referă la drepturile de acces:

Utilizarea qmail si Sendmail

Dacă doriți să ocolească funcția de e-mail () PHP și de a folosi un program binar pentru e-mail, aveți nevoie pentru a determina tipul de server de mail, și apoi PHPMailer Rulați fișierul binar, care este, probabil, o viteză puțin până operația. exemplu:

Un exemplu de o listă de adrese

Analiza codului lista de distribuție

Prima parte este aceeași ca și în primul exemplu - conectăm fișierele necesare.

Notă tag-ul condiționată. Mai târziu, când vom efectua o acțiune în ciclul, str_replace () de comandă, vom înlocui acest nume de etichetă utilizatorului din baza de date.

În continuare, vom inițializa clasa de a lucra cu e-mail.

Acum am ajuns la punctul în care există o adresă de referință directă. Extrem de important să înțelegem că suntem aici pentru afaceri. Prima parte a codului este angajată în principal în formarea $ MEMBER_NAME variabila. care va conține toate datele utilizatorului curent.

Următoarea parte a codului definește preferințele utilizatorului - HTML sau text simplu. În cazul în care utilizatorul preferă HTML, noi îl vom trimite un corp de text-HTML activat scrisoarea vvide a scrisorii. În caz contrar - vom trimite o versiune numai text.

ia în considerare cu atenție textul de mai sus, până când ajunge la o înțelegere completă. Toate informațiile necesare pentru ca aceasta a fost în părțile anterioare ale materialului nostru.

Pentru a rezuma

Acest curs de formare ar trebui să vă dea o zdruncinătură bun pentru a face viața mai ușoară atunci când se lucrează cu e-mail. Și toate acestea - prin biblioteca superioară PHPMailer. Acum puteți trimite nezadumyvayas e-mail despre titlurile și alte dificultăți.

Dacă setați această clasă în mod corect, apoi mai târziu, atunci când creați alte site-uri, nu va trebui să pierdeți timpul.