Php trimite e-mail prin Yandex smtp. Trimiterea de e-mailuri prin SMTP de pe un server local
PHPMailer este o bibliotecă foarte convenabilă și populară pentru trimiterea de e-mail mesaje de pe site-ul dvs. Acest articol descrie setările de bază ale bibliotecii și oferă exemple de cod pentru trimiterea mesajelor. PHPMailer are în sortimentul său poate tot ce ți-ai putea dori de la lucrul cu e-mailul: trimiterea în moduri diferite, prin diferite servere, inclusiv prin smtp, abilitatea de a cripta și semna scrisorile, astfel încât acestea să nu ajungă în spam și multe altele.
Puteți descărca biblioteca PHPMailer de la https://github.com/PHPMailer/PHPMailer (butonul „Clonați sau descărcați”).
În primul rând, mă voi uita la câteva exemple simple pentru a clarifica cum să trimiteți e-mailuri folosind PHPMailer.
Trimiterea de e-mailuri prin funcția mail() folosind PHPMailer
Dacă doriți să trimiteți e-mailuri de la găzduirea dvs. prin intermediul dvs server de mail, atunci totul este destul de simplu și va arăta cam așa:
// Includeți biblioteca PHPMailer, utilizați PHPMailer\PHPMailer\PHPMailer; necesită „PHPMailer/PHPMailer.php”; // Creați o scrisoare $mail = new PHPMailer(); $mail->setFrom(" [email protected]", "Ivan Ivanov"); // de la care (e-mail și nume) $mail->addAddress(" [email protected]", "Vasya Petrov"); // cui (e-mail și nume) $mail->Subject = "Test"; // subiectul scrisorii // text html litere $mail->msgHTML("
Buna ziua!
Aceasta este o scrisoare de testare.
"); // Trimite dacă ($mail->send()) ( echo "Mesaj trimis!"; ) else ( echo "Eroare: " . $mail->ErrorInfo; )După cum puteți vedea, totul este destul de simplu: conectăm biblioteca, completăm de la cine, cui, subiectul și textul scrisorii și o trimitem. Trimiterea de e-mailuri în acest fel va funcționa numai de la adresele de e-mail din domeniul dvs. (cu excepția cazului în care acestea sunt legate de alți e-mailuri).
Trimiterea de e-mailuri prin SMTP folosind PHPMailer folosind exemplul Yandex și Google
De asemenea, puteți trimite o scrisoare printr-un alt expeditor, de exemplu, prin Yandex. Codul va arăta cam așa:
// Includeți biblioteca PHPMailer, utilizați PHPMailer\PHPMailer\PHPMailer; utilizați PHPMailer\PHPMailer\SMTP; necesită „PHPMailer/PHPMailer.php”; necesită „PHPMailer/SMTP.php”; // Creați o scrisoare $mail = new PHPMailer(); $mail->isSMTP(); // Trimitere prin SMTP $mail->Host = "smtp.yandex.ru"; // Adresa serverului SMTP $mail->SMTPAuth = true; // Activează autentificarea SMTP $mail->Username = "login"; // numele tau de utilizator (fara domeniu si @) $mail->Password = "parola"; // parola dvs. $mail->SMTPSecure = "ssl"; // criptare ssl $mail->Port = 465; // portul de conexiune $mail->setFrom(" [email protected]", "Ivan Ivanov"); // de la care $mail->addAddress(" [email protected]", "Vasya Petrov"); // căruia $mail->Subject = "Test"; $mail->msgHTML("
Buna ziua!
Aceasta este o scrisoare de testare.
"); // Trimite dacă ($mail->send()) ( echo "Mesaj trimis!"; ) else ( echo "Eroare: " . $mail->ErrorInfo; )Trimiterea de e-mailuri prin Google are o avertizare: trebuie cont google permite accesul la aplicații care nu sunt de încredere. Pentru a face acest lucru, trebuie să vă conectați la contul dvs. https://myaccount.google.com, să mergeți la securitate, să accesați secțiunea „Aplicații neîncrezătoare care au acces la contul dvs.” și să comutați la „Permis” acolo. La momentul scrierii, această pagină este https://myaccount.google.com/u/0/lesssecureapps.
$mail->Host = "smtp.gmail.com"; // Adresa serverului SMTP $mail->SMTPAuth = true; // Activează autentificarea SMTP $mail->Username = "login"; // numele dvs. de utilizator $mail->Password = "parola"; // parola dvs. $mail->SMTPSecure = "ssl"; // criptare ssl $mail->Port = 465; // port de conectare
Dacă rulați programul pentru trimiterea prin smtp pentru prima dată, atunci este recomandabil să utilizați suplimentar înainte de a trimite $mail->SMTPDebug = 1; pentru a primi toate mesajele de la client și serverul smtp, de ex. Pe ecran va fi afișat întregul proces de conectare, autorizare etc., ceea ce este foarte util pentru depanarea programului dumneavoastră.
Trimiterea unui e-mail cu un atașament folosind PHPMailer
Totul este destul de simplu aici, trebuie doar să folosești metoda adaugă atașament. Voi da un exemplu și, în același timp, voi demonstra încă câteva caracteristici suplimentare:
// Includeți biblioteca PHPMailer, utilizați PHPMailer\PHPMailer\PHPMailer; utilizați PHPMailer\PHPMailer\Exception; necesită „PHPMailer/PHPMailer.php”; necesită „PHPMailer/Exception.php”; // Creați o scrisoare $mail = PHPMailer nou; $mail->CharSet = "UTF-8"; $mail->setFrom(" [email protected]", "Ivan Ivanov"); // de la care $mail->addReplyTo(" [email protected]", "Ivan Ivanov"); // adresa de returnare $mail->addAddress(" [email protected]", "Vasya Petrov"); // căruia $mail->Subject = "Test"; // subiect $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // obține "corpul" a scrisorii din fișierul $mail->AltBody = "Scrisoare text simplu" // scrisoarea text simplu dacă clientul nu acceptă html $mail->addAttachment("my_file.txt" // atașează un fișier $mail-); >addAttachment("phpmailer) .jpg" // atașați al doilea fișier // Trimiteți if ($mail->send()) ( echo „Mesaj trimis!”; ) else ( echo „Eroare: „ . $mail- >ErorInfo )
Puteți adăuga mai multe adrese de destinatari utilizând addAddress. Sau, dacă este necesar, puteți, dimpotrivă, să ștergeți toate adresele destinatarilor folosind metoda clearAddresses(). Puteți șterge toate atașamentele folosind clearAttachments().
De asemenea, puteți utiliza AdaugăImagine încorporată pentru a adăuga un atașament (de obicei o imagine) la e-mail, care este destinat să fie folosit în cod html și nu va fi disponibil pentru descărcare. Un exemplu de utilizare a unei imagini într-o scrisoare care nu este disponibilă pentru descărcare:
// Includeți biblioteca PHPMailer, utilizați PHPMailer\PHPMailer\PHPMailer; necesită „PHPMailer/PHPMailer.php”; //Creează o scrisoare $mail = PHPMailer nou; $mail->IsHTML(true); $mail->setFrom(" [email protected]", "Ivan Ivanov"); $mail->addAddress(" [email protected]", "Vasya Petrov"); $mail->Subject = "Test"; $mail->AddEmbeddedImage("phpmailer.jpg","testImage"); $mail->Body = "
Imagine în cod html
"; // Trimite $mail->trimite();Deci poți trimite scrisori cu imagini, care sunt doar în corpul scrisorii, dar nu pot fi descărcate ca atașament. Aceste imagini pot fi folosite oriunde în codul html al scrisorii, trebuie doar să specificați cidul imaginii pe care l-ați folosit în AddEmbeddedImage în loc de adresa URL.
Trimiterea de e-mailuri semnate și criptate prin PHPMailer
În mod implicit, PHPMailer criptează toate mesajele trimise. Puteți dezactiva criptarea e-mailurilor numai atunci când trimiteți e-mailuri prin SMTP folosind codul:
$mail->SMTPSecure = false; $mail->SMTPAutoTLS = false;
La semnați scrisoarea cu semnătura DKIM, trebuie să efectuați mai mulți pași:
- Generați chei private și publice pentru domeniul dvs
- Adăugați o înregistrare DNS pentru un domeniu TXT cu o cheie publică
- Configurați semnătura DKIM în PHPMailer înainte de a trimite un e-mail
Acum voi descrie fiecare pas mai detaliat.
Generarea de chei publice și private
Dacă aveți găzduire Linux și aveți acces la Shell, atunci generarea fișierelor cheie este la fel de ușoară ca și decojirea perelor, trebuie să rulați doar 2 comenzi cu drepturile dvs. normale de utilizator:
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout
Respectiv, test-privat.pemŞi test-public.pem- acestea sunt chei private și publice. Trebuie să le salvați într-un folder care nu va fi accesibil vizitatorilor site-ului sau oricui altcineva, cu excepția dvs.
Dacă nu este posibil să executați comenzi în shell, atunci pentru a genera chei private și publice și a le salva în fișiere, puteți utiliza următorul cod:
$domain = "test.ru"; // domeniul dvs. $privatekeyfile = "test-private.pem"; // numele fișierului în care va fi scrisă cheia privată $publickeyfile = "test-public.pem"; // numele fișierului în care va fi scrisă cheia publică dacă (file_exists($privatekeyfile)) ( echo "
Utilizarea cheilor existente
"; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); ) else ( echo "Creați chei"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); openssl_pkey_export_to_file($pk, $spubltaileypkey_de_fișier($spubltaileypkey_de_deschide); ); $publickey = $pubKey["key"]; file_put_contents($publickeyfile, $publickey = file_get_contents);
Cheie privată (păstrați aceasta privată!):
" . $privatekey .""; ecou"
Cheie publică:
" . $publickey ."";
Atenţie! Nu uitați să vă asigurați că folderul în care vor fi salvate fișierele poate fi scris.
Adăugarea unei înregistrări DNS cu o cheie publică
Este necesară o înregistrare DNS pentru ca serverele de e-mail care vor primi scrisorile dumneavoastră să poată verifica semnătura scrisorii citind înregistrarea DNS a domeniului dumneavoastră. De obicei, puteți adăuga o înregistrare DNS în panoul de control al domeniului sau în panoul de control al găzduirii. Dacă nu știți cum să adăugați o intrare, contactați asistența furnizorului dvs. de găzduire.
Trebuie să adăugați o înregistrare DNS ca aceasta:
Nume intrare: mail._domainkey.test.ru. (la sfârșit există un punct ".")
TTL: 3600 (sau oricare va fi implicit)
Tip post: TXT
Sens: v=DKIM1; h=sha256; t=s; p=CHEIA_PUBLICĂ_VOASTRĂ
În numele intrării test.ru trebuie înlocuit cu numele dvs. de domeniu. Înlocuiți cuvintele „YOUR_PUBLIC_KEY” cu textul pe care l-ați primit la pasul anterior după „Public Key”, fără „-----BEGIN PUBLIC KEY-----” și „-----END PUBLIC KEY- -- --", doar cheia în sine. În acest caz, sunt necesare toate liniile cheii se concatenează într-o singură linie lungă astfel încât să nu existe întreruperi de linie.
Configurarea semnăturii DKIM în PHPMailer și trimiterea unui e-mail
Acum nu mai rămâne decât să faceți câteva setări PHPMailer înainte de a trimite scrisoarea și aceasta va fi semnată. Cred că următorul exemplu va clarifica totul:
// Includeți biblioteca folosiți PHPMailer\PHPMailer\PHPMailer; necesită „PHPMailer/PHPMailer.php”; // Creați o scrisoare $mail = PHPMailer nou; $mail->CharSet = "UTF-8"; $mail->setFrom(" [email protected]"); $mail->addAddress(" [email protected]"); $mail->Subject = "Acesta este un test"; $mail->msgHTML("
Acesta este un test
"); // Configurarea unei semnături DKIM $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // Trimite $ mail- >trimite();Desigur test.ru ar trebui să vă schimbați numele de domeniu și test-privat.pem la calea completă și numele fișierului cheie privată care a fost creat în etapa de generare a cheii.
Acum, e-mailurile tale trimise prin PHPMailer vor fi semnate DKIM cu cheia ta privată.
Pentru ca un anumit site web să aibă posibilitatea de a funcționa eficient și productiv, crearea lui trebuie abordată cât mai responsabil și cu atenție. Alegerea sistemului care va fi folosit pentru crearea unui magazin online merită o atenție deosebită. Cert este că o platformă comercială specializată în vânzarea de bunuri sau servicii trebuie să permită implementarea tuturor funcționalităților necesare și să fie ușor de utilizat, atât pentru administratorii implicați în întreținerea și completarea site-urilor, cât și pentru clienții magazinelor online. Mulți oameni și companii care se confruntă cu întrebarea de a alege un CMS potrivit pentru ei înșiși analizează dacă să aleagă Magento sau OkayCMS. Să comparăm caracteristicile și capacitățile acestor motoare de site-uri web.
Când lucrați pe propriul site web, o persoană sau o companie va trebui să depună mult efort - numai în acest caz puteți conta pe rezultate pozitiveși obținerea unui instrument cu adevărat eficient. Una dintre întrebările fundamentale care trebuie rezolvate chiar înainte de a începe crearea unui site web va fi cum să decideți asupra celei mai potrivite opțiuni CMS. În continuare, vom compara două CMS: Joomla sau OkayCMS și vom acorda atenție caracteristicilor fiecăruia dintre ele.
A avea propriul site web este una dintre cerințele fundamentale pentru o afacere eficientă și cu succes. Statisticile indică în mod clar o creștere a numărului de achiziții de diverse bunuri și comenzi de servicii prin internet. Ținând cont de acest lucru, majoritatea companiilor comerciale sunt deja conștiente de necesitatea de a avea propriul site web. Cu toate acestea, simplul fapt de a avea o resursă de internet nu este suficient pentru a conta pe eficacitatea, profitabilitatea și beneficiile de afaceri așteptate.
Când vă pregătiți să vă creați propriul site web sau să deschideți un magazin online, trebuie să luați în considerare și să analizați multe probleme, precum și să rezolvați diverse probleme. Doar in acest caz te poti baza pe faptul ca proiectul tau va aduce rezultate pozitive si va putea sa iti satisfaca pe deplin asteptarile. Dintre diversele probleme legate de dezvoltarea unui magazin online, problema alegerii unui CMS merită o atenție deosebită. Pentru a vă fi mai ușor să decideți asupra motorului optim pentru dvs., în interior
Atunci când plănuiesc să-și creeze propriul site web pentru un viitor magazin online, un număr destul de mare de oameni și chiar companii specializate în vânzări se confruntă cu o alegere dificilă și extrem de importantă: care dintre CMS-urile existente să aleagă. Dacă vă gândiți ce să alegeți: PrestaShop sau OkayCMS, vă sugerăm să citiți acest articol, în care vom compara aceste două sisteme de creare de site-uri de internet, în special, magazine online.
2019-08-05
Bună, dragă vizitatoare!
Vă rog să mă iertați pentru întârzierea actualizării blogului. Dar există o explicație complet de înțeles pentru asta. La urma urmei, a fost vara, dacha, oaspeți, pădure, apă și multe altele, ceea ce nu mi-a permis să abordez problemele creării unui site web. Dar acum m-am eliberat puțin, oaspeții au plecat și cred că acum voi putea să acord cu siguranță atenția cuvenită acestui lucru.
Așadar, după ce în ultimul articol am conectat mail-ul domeniului nostru la unul dintre serviciile de mail, acum să vedem cum poți trimite email de pe site. Mai mult, în așa fel încât scrisorile noastre să nu ajungă în SPAM, ci să fie livrate în mod fiabil, cu un grad ridicat de probabilitate, destinatarilor noștri.
În general, există o funcție încorporată mail() pentru trimiterea de scrisori în PHP. Dar trebuie remarcat faptul că, în ciuda simplității acestei metode (în acest caz, pentru a trimite scrisori este suficient să specificați o singură linie de cod cu anumiți parametri), utilizarea acestei opțiuni are un dezavantaj semnificativ asociat cu problema SPAM-ului .
Cert este că filtrele anti-SPAM ale serverelor de e-mail din partea destinatarului nu prea favorizează scrisorile trimise prin funcția mail(). Și în cele mai multe cazuri, astfel de mesaje sunt filtrate sau chiar șterse înainte de a ajunge la destinatar.
Și pentru a elimina cât mai mult posibil astfel de cazuri, se folosește de obicei o altă opțiune, în care scrisorile sunt trimise ca și cum ar fi făcut de un serviciu de poștă terță parte.
Această metodă se numește trimiterea de e-mailuri prin SMTP cu autorizare. Pe care ne vom uita astăzi folosind exemplul de trimitere a unui formular feedback. Mai mult, pentru aceasta vom folosi biblioteca PHPMailer destul de cunoscută și populară, care vă permite să organizați pur și simplu trimiterea de scrisori prin SMTP.
- Cum vom trimite scrisori de feedback
- Crearea unui formular de feedback
- Instalarea bibliotecii PHPMailer
- Creăm un script pentru trimiterea e-mailurilor prin SMTP
- Se verifică trimiterea e-mailului
- Fișiere sursă site-ul
Cum vom trimite scrisori de feedback
Înainte de a începe munca practica După ce trimitem scrisori de feedback, vom decide mai întâi cum o vom face.
Formularul de feedback este conceput pentru a permite utilizatorului să comunice cu administratorul site-ului pentru a-și transmite mesajul. De obicei, acest formular constă din mai multe câmpuri și un buton „Trimite”.
În principiu, pentru a trimite un e-mail este suficient să folosiți doar câteva câmpuri care oferă suficiente informații despre utilizator și conținutul mesajului, cum ar fi:
- „Nume” - pentru a introduce numele expeditorului mesajului;
- „E-mail” - pentru adresă e-mail expeditor;
- „Subiectul mesajului”;
- „Textul mesajului”.
Deși puteți adăuga altele. De exemplu, un număr de telefon, dacă acest lucru este cu adevărat necesar.
În cazul nostru, astfel de scrisori vor fi trimise la adresa administratorului site-ului dintr-o cutie poștală reală cu autorizare pe serviciul de e-mail la care este conectat domeniul nostru.
Deoarece în articolul anterior ne-am concentrat pe verificarea conexiunii e-mail-ului de domeniu la serviciul Yandex.Mail, vom trimite e-mail pentru această opțiune. Deși acest lucru nu este important. Mai jos veți vedea acele opțiuni care, atunci când sunt modificate, vă vor permite să trimiteți e-mail prin serverul de mail Mail.ru.
Ca o adevărată cutie poștală din care vor fi trimise scrisorile, vom folosi contul unui utilizator de e-mail de domeniu nou creat, să zicem cu adresa [email protected]. Și vom trimite aceste scrisori către cutie poştală administrator [email protected], pe care l-am creat anterior în articolul anterior.
Astfel, expeditorul scrisorii din formularul de feedback va fi cutia poștală [email protected]., iar destinatarul - [email protected]. În acest caz, toate informațiile despre utilizatorul care a trimis mesajul cu conținutul acestuia vor fi transmise în corpul scrisorii trimise.
Crearea unui formular de feedback
După ce ne-am hotărât asupra procedurii de trimitere a scrisorilor, acum vom crea un formular de feedback cu care vom face acest lucru.
Mai jos este codul HTML pentru acest formular, pe care îl vom plasa pe pagina „Contacte” (fișier kontakty.php în directorul articole).