Trimiterea de e-mailuri din PHP folosind SMTP (cu atașament). trimite e-mail prin smtp în php trimite e-mail în php prin smtp

Mail PHP

Această funcție este implementată implicit ca Trimite email. Această funcționalitate nu necesită server terță parte pentru redirecționarea e-mailului. Pentru a verifica corectitudinea acestei funcții este suficient să creați un fișier test.php în folderul cu site-ul și să plasați acolo următorul cod:

Unde în schimb "e-mailDESTINATAR" introduceți adresa de e-mail la care trebuie trimis e-mailul.

Loc fisierul dat la rădăcina site-ului dvs.

Apoi, introduceți www.YourDomain/test.php în bara de adrese. Dacă o scrisoare a fost trimisă către e-mailul specificat, atunci găzduirea dvs. funcționează corect cu funcția de trimitere a scrisorilor " Mail PHP". Este posibil ca scrisoarea să ajungă în spam, așa că trebuie și verificată.

Dacă litera a venit într-o codificare de neînțeles, schimbați linia: "Verificarea e-mailurilor trimise" pe „Se verifică mesajele trimise”, „Content-type:text/html;charset=utf-8”.

Și retrimiteți scrisoarea bara de adresa browser-ul dvs.

Dacă, după manipulările efectuate, scrisoarea de testare nu a ajuns la destinatarul final, trebuie să contactați suportul tehnic al găzduirii dvs.

De lipsuri aceasta metoda este de remarcat faptul că lucrarea nu este permanentă aceasta metoda. Pot exista întreruperi în trimiterea e-mailurilor pe partea de găzduire.

Principalul dezavantaj al acestei metode este că toate scrisorile trimise către e-mailurile clienților nu vor fi recunoscute de serviciile de poștă (gmail, mail.ru, yandex.ru) astfel încât au fost trimise direct de pe site-ul dvs.

Serviciul de e-mail Gmail afișează datele de e-mail cu un semn de întrebare și legenda: „Gmail nu a putut confirma că acest e-mail a fost trimis de la domeniul YourDomain Acesta poate fi spam”.

Pentru a evita această situație .

SMTP (Simple Mail Transfer Protocol)

SMTP este un protocol de transfer de e-mail. În total, pentru a configura transmisia de e-mail prin acest protocol este necesar un server SMTP. Cel mai obișnuit mod de a utiliza corespondența corporativă (domeniu) yandex.ru ca server SMTP este https://pdd.yandex.ru/.

În primul rând, ai nevoie cont (mail) yandex, pe baza cărora vor fi create e-mailuri pentru domeniul dvs.: " [email protected] Domeniul dvs." " [email protected] YourDomain"... Contul principal nu va fi vizibil nicăieri și este folosit doar pentru a crea e-mailuri de domeniu pe baza lui în viitor.

După autorizare în personal cont yandex Poșta de domeniu este creată la linkul https://pdd.yandex.ru/ . Este acest e-mail de domeniu pe care utilizatorii îl vor vedea în câmpul „Expeditor”.

Câmpul „Expeditor” este obligatoriu atunci când trimiteți e-mailuri prin SMTP. Folosind SMTP ca trimitere de e-mailuri, o grămadă de „ Domeniu" - "e-mail", astfel scrisorile sunt recunoscute de serviciile de poștă.


Printre deficiențele acestei metode, este de remarcat imposibilitatea „încărcării” portretului e-mailului de domeniu, deoarece serviciile de e-mail în sine nu oferă încă această funcționalitate.

În unele cazuri, pentru a testa sau diagnostica funcționarea e-mailului, administratorul de poștă trebuie să verifice trimiterea scrisorilor prin serverele lor Exchange (și nu numai) de la anumite gazde. În cazul în care serverul nu necesită autorizare (server open-relay), puteți trimite e-mail. Cu toate acestea, în majoritatea cazurilor, serverele de e-mail necesită autorizare pentru a trimite e-mail. În acest exemplu, vom arăta cum să efectuați autentificarea AUTH LOGIN pe consola telnet activată Server SMTPși trimite o scrisoare.

AUTH LOGIN- în terminologia Exchange, aceasta este autentificarea de bază, atunci când numele de utilizator și parola sunt transmise prin rețea într-un algoritm codificat baza64 formă. Pe majoritatea servere interne Administratorii Exchange nu dezactivează De bazăAutentificare. Puteți verifica suportul acestuia în setările conectorului de recepție.

Notă. Vă rugăm să rețineți că atunci când accesează canalul de comunicare, un atacator poate intercepta și decripta cu ușurință acreditările utilizatorului codificate în Base64. Prin urmare, această metodă de autorizare este recomandată a fi folosită numai în privat rețele corporative.

Pentru a autoriza pe serverul de mail folosind AUTH LOGIN, trebuie să convertim numele de utilizator și parola utilizatorului de la care va fi trimisă scrisoarea în formatul Base64. Acest lucru se poate face cu scripturi sau servicii on-line. Profit de site-ul https://www.base64encode.org/ .

Nume de utilizator: [email protected] contoso.com, în codificarea Base64 a rezultat: dGVzdHVzZXJAY29udG9zby5jb20=

Parola: $ sus3RsTr)ng- în Base64 JHVwM1JzVHIpbmc=

Acum, în linia de comandă, folosind Telnet, ne conectăm la portul 25 (SMTP) al serverului nostru de e-mail (voi evidenția cu albastru comenzile introduse):

telnet mail.contoso.com 25

Dacă este Exchange, va returna ceva de genul;

Să ne prezentăm:

ehlo sender.contoso.com

Serverul va returna o listă cu tipurile și capabilitățile de autorizare acceptate. După cum puteți vedea, autorizarea de bază (AUTH LOGIN) este pe listă.

250-mail.contoso.com Bună ziua
250 - DIMENSIUNEA 36700160
250-CONDUCERE
250-DSN
250-CODURI DE STARE ÎMBUNĂTĂTATE
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARMIME
250 BĂRĂTIRE

AUTH LOGIN

Serverul ar trebui să răspundă:
334 VXNlcm5hbWU6

Acum inserați numele de utilizator Base64 pe care l-am codificat mai devreme:
dGVzdHVzZXJAY29udG9zby5jb20=

Serverul ar trebui să răspundă:

334 UGFzc3dvcmQ6.

Acum este timpul să lipiți parola în format Base64:
JHVwM1JzVHIpbmc=

Dacă numele de utilizator și parola sunt corecte, serverul va răspunde.
235 2.7.0 Autentificare reușită

Dacă nu:

535 5.7.8 Eroare: autentificarea eșuată: UGFzc3dvcmQ6

Acum puteți completa câmpurile standard ale scrisorii:

mail de la: [email protected]
250 2.1.0 Expeditorul OK
rcpt la: [email protected]
250 2.1.5 Destinatar OK
date
354 Începeți introducerea e-mailului; se termina cu.
de la: TestUserovich
către: TheAdmin< [email protected] >
Subiect: Test BASE SMTP autentificat prin Telnet
Acesta este testul
.
250 2.6.0 Poștă în coadă pentru livrare

PĂRĂSI

221 2.0.0 Închiderea conexiunii.
Conexiune închisă de către gazda externă.

Asta e tot, scrisoarea de test ar trebui să fie livrată cu succes în căsuța poștală a destinatarului.

PHPMailer este o bibliotecă foarte utilă și populară pentru trimiterea de mesaje de e-mail 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 ceea ce ți-ai putea dori de la lucrul cu mail: trimitere în diferite moduri, prin diferite servere, incl. prin smtp, abilitatea de a cripta și semna scrisorile, astfel încât acestea să nu cadă în spam și multe altele.

Puteți descărca biblioteca PHPMailer de la https://github.com/PHPMailer/PHPMailer (butonul „Clone sau descărcare”).

Lasă-mă să încep cu un cuplu exemple simple pentru a înțelege cum să trimiteți e-mailuri folosind PHPMailer.

Trimiterea de e-mailuri prin funcția mail() cu PHPMailer

Dacă doriți să trimiteți scrisori de la găzduirea dvs. prin serverul dvs. de e-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 un e-mail $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 e-mail // text html$mail->msgHTML("

Salut!

Acesta este un e-mail de testare.

"); // Trimite dacă ($mail->send()) ( echo "Mail 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 ale domeniului dvs. (cu excepția cazului în care acestea sunt legate de alți e-mailuri).

Trimiterea de e-mailuri prin SMTP folosind PHPMailer pe 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 un e-mail $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("

Salut!

Acesta este un e-mail de testare.

"); // Trimite dacă ($mail->send()) ( echo "Mail 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ă accesați contul dvs. https://myaccount.google.com , să accesați securitatea, 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 de trimitere smtp pentru prima dată, atunci este recomandabil să utilizați suplimentar $mail->SMTPDebug = 1; pentru a primi toate mesajele client și server 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 de e-mail cu atașament folosind PHPMailer

Totul este destul de simplu aici, trebuie doar să folosești metoda adauga atasament. Voi da un exemplu, demonstrând în același timp î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 un e-mail $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 în text simplu"; // e-mail în text simplu dacă clientul nu acceptă html $mail->addAttachment("my_file.txt"); // atașați un fișier $ mail->addAttachment("phpmailer .jpg"); // atașează al doilea fișier // Trimite dacă ($mail->send()) ( echo „Mail 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 destinatarului folosind clearAddresses(). Puteți șterge toate atașamentele cu clearAttachments().

De asemenea, puteți utiliza Adăugați o imagine încorporată pentru a adăuga un atașament (de obicei o imagine) la e-mail, care este destinat să fie utilizat în codul 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ă un mail $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

"; // Se trimite $mail->send();

Deci poți trimite e-mailuri cu poze, care sunt doar în corpul e-mailului, dar nu pot fi descărcate ca atașament. Aceste imagini pot fi folosite oriunde în codul html al e-mailului, trebuie doar să înlocuiți url-ul cid al imaginii pe care l-ați folosit în AddEmbeddedImage.

Trimiterea de e-mailuri semnate și criptate prin PHPMailer

În mod implicit, PHPMailer criptează toate e-mailurile trimise. Puteți dezactiva criptarea mesajelor numai atunci când trimiteți mesaje prin SMTP folosind codul:

$mail->SMTPSecure = fals; $mail->SMTPAutoTLS = false;

La semnați scrisoarea cu semnătura DKIM, trebuie să faci câteva lucruri:

  • Generați chei private (private) și publice (publice) pentru domeniul dvs
  • Adăugați o înregistrare DNS pentru un domeniu de tip TXT cu o cheie publică
  • Configurați semnătura DKIM în PHPMailer înainte de a trimite e-mail

Acum voi descrie fiecare pas mai detaliat.

Generarea de chei private și publice

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 obișnuite ale utilizatorului dvs.:

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 sunt chei publice și private. 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 (private) și publice (publice) și a le salva în fișiere, puteți utiliza următorul cod:

$domain = "test.com"; // 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, $spubltailkey_pkey_de_fișier openssl_pkey_depend($spubltaileypkey_de_de_s); ); $publickey = $pubKey["cheie"]; file_put_contents($publickeyfile, $publickey); $privatekey = file_get_contents($privatekeyfile); ) echo "

Cheie privată (păstrați aceasta privată!):

" .$privatekey ."
"; ecou"

cheie publica:

" .$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 intrare DNS pentru a servere de mail, care va primi e-mailurile dvs., au putut verifica semnătura de pe e-mail citind înregistrarea DNS a domeniului dvs. De regulă, o intrare DNS poate fi adăugată în panoul de control al domeniului dvs. 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 intrare DNS ca aceasta:

Nume înregistrare: mail._domainkey.test.ru. (la sfârșit punctul ".")

TTL: 3600 (sau care va fi implicit)

Tipul de înregistrare: txt

Sens: v=DKIM1; h=sha256; t=s; p=CHEIA_PUBLICĂ_VOASTRĂ

În numele intrării test.ru ar trebui î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, toate liniile cheie au nevoie se concatenează într-o singură linie lungă astfel încât să nu existe linii noi.

Configurarea unei semnături DKIM în PHPMailer și trimiterea unui e-mail

Acum nu mai rămâne decât să faceți câteva ajustări la PHPMailer înainte de a trimite e-mailul și acesta va fi semnat. Cred că următorul exemplu va clarifica:

// Includeți biblioteca folosiți PHPMailer\PHPMailer\PHPMailer; necesită „PHPMailer/PHPMailer.php”; // Creați un e-mail $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

"); // Setarea semnăturii DKIM $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "mail"; // Trimitere $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 cu semnătura DKIM a cheii tale private.

Trimiterea de e-mailuri prin SMTP de pe un server local vă permite să testați trimiterea de mesaje de pe un site situat pe o mașină locală sau, mai simplu, un server local. Pentru a face acest lucru, puteți utiliza orice serviciu de e-mail yandex, google sau mail.ru.

În primul rând, SMTP (Simple Mail Transfer Protocol) este un protocol utilizat pe scară largă protocol de rețea destinat transmiterii E-mailîn rețelele TCP/IP. Și toate serviciile de poștă populare au astfel de protocoale.

Odată cu apariția serverelor locale, nu este nevoie să alegeți un furnizor de găzduire pentru a verifica performanța scripturilor individuale sau a sistemelor cms și cu atât mai mult să plătiți pentru el. Este mult mai ușor să testați totul pe un computer și apoi puteți arăta tuturor ceea ce ați „făcut”.

Multe dintre aceste servere au deja un sistem integrat softwareși funcționalitatea necesară pentru a lucra cu mail, trebuie doar să o configurați corect.

Pentru a verifica performanța unui astfel de e-mail, aveți nevoie de minimum:

  • Puteți utiliza Openserver ca server local.
  • Și un script simplu, al cărui șablon poate fi luat mai jos.
  • Poate fi folosit orice server de mail.

Trimiterea e-mailului php prin configurarea scriptului SMTP

Un șablon de script simplu care poate fi copiat mai jos sau descărcat de pe sute de site-uri similare, trebuie editat.

Mai întâi trebuie să modificați unele valori în șablonul de script.
la - schimba in adresa poștală unde va fi trimis mailul.
subiect - subiectul scrisorii
mesaj - mesajul în sine, sau corpul scrisorii.

Exemplu de script-ul meu:

Desigur, puteți extinde puțin funcționalitatea și puteți face ca scriptul să emită un mesaj despre trimiterea e-mailurilor. Deși de fapt serverul SMTP este cel care trimite, iar scriptul formează doar un mesaj.

De exemplu, puteți scrie așa:

Toate valorile înlocuite trebuie să fie între ghilimele, altfel scriptul va genera o eroare. După aceea, puteți salva scriptul în folderul serverului local.

De exemplu: domenii/trimite/index.phpși începeți configurarea trimiterii de e-mail prin SMTP opensrver.

E-mailul va fi trimis la orice adresă care va fi specificată în script în loc de valoare 'la' , dar SMTP-ul care va fi specificat în setările openserver va procesa și trimite acest e-mail.

  1. Pornirea serverului
  2. Deschideți modulul openserver cu setările din meniul „mail”.
  3. Completem toate câmpurile așa cum se arată în imagine, în timp ce înlocuim numele de utilizator, e-mailul expeditorului și parola dintr-o cutie poștală reală de pe Yandex.

Salvăm setările și după ce serverul este repornit, vă puteți referi la scriptul în sine. Din folderul „Site-urile mele”, deschideți folderul „trimitere”, care conține scriptul index.php salvat anterior.

De îndată ce acest script este apelat, o nouă fereastră de browser va afișa informații că scriptul a funcționat.

După aceea, ar trebui să vă verificați cutie poștală, a cărui adresă a fost specificată în scenariu, dacă scrisoarea a sosit.

Dacă nu este acolo, atunci ceva nu este configurat corect sau scrisoarea a ajuns în dosarul de spam.

Toate celelalte setări arată similar, dar pentru orice eventualitate, informații suplimentare nu ar strica.

Pentru a configura trimiterea de e-mail prin SMTP mail ru, trebuie doar să înlocuiți setările Yandex cu setările mail ru.

Și să nu reconstruiască de fiecare dată server local, cel mai bine este să configurați diferite profiluri openserver. Cum se face acest lucru este prezentat în tutorialul video.

În acest caz, va fi suficient doar să încărcați profilul și toate setările pentru care au fost specificate acest profil va fi disponibil după repornirea serverului. Foarte la îndemână și foarte ușor de lucrat.

Pentru fiecare profil (nu contează deloc cum se va numi), trebuie făcute propriile setări, cu excepția cazului în care, bineînțeles, se plănuiește folosirea de scripturi, sisteme-cms și aplicații care diferă în parametrii lor.
Dacă nu, vă puteți descurca cu setările implicite.

Cât despre SMTP mail ru, totul este identic aici.

Datele Yandex se modifică în datele e-mail ru

Se trimite mail prin smtp google

Pentru a configura trimiterea e-mailurilor prin Google SMTP, ar trebui să încercați puțin.

În primul rând, crearea profilului în sine în Google este mai dificilă decât în ​​alte sisteme Yandex și mail ru.
În al doilea rând, sistemul nu va lăsa e-mailul să treacă așa, chiar dacă furnizați detaliile de conectare. Pentru început, ea va trimite o scrisoare în care vor fi toate informațiile necesare despre instrucțiunile ulterioare.

Cât despre restul pentru Google este configurat în același mod. Toate datele se modifică.

Pentru a configura trimiterea e-mailurilor prin alt SMTP, toate datele vor fi aproximativ aceleași.

Dacă totul a funcționat pentru tine și scrisorile au ajuns la destinatarul specificat, atunci totul a fost făcut corect. Ar fi grozav dacă vă împărtășiți experiența în comentarii.

Deoarece este interzisă trimiterea de mesaje anonime de pe serverele virtuale de găzduire Windows, trimiterea de scrisori ar trebui să se facă printr-un server SMTP, pentru care este posibil să folosim și sistemul nostru de e-mail.

Cum se trimit e-mailuri folosind PHP?

Folosind orice clasă PHP care acceptă autorizarea pe serverul smtp. De exemplu, puteți utiliza setul de clase PHPMailer.

De asemenea, puteți folosi exemplul nostru, care implementează trimiterea de e-mailuri folosind un server smtp care necesită autorizare. Prin urmare, nu uitați să adăugați detaliile de acces adecvate la script, de exemplu:

// Dacă trebuie să afișați jurnalul de sesiune SMTP, puteți decomenta următoarea linie. // $_SERVER["debug"] = adevărat; funcția MailSmtp ($reciever , $subject , $conținut , $headers , $debug = 0 ) ( $smtp_server = "smtp.site" ; // Adresa serverului SMTP$smtp_port = 25 ; // Port server SMTP$smtp_user = " [email protected]" ; // Nume de utilizator pentru autorizare pe serverul SMTP$smtp_password = "parolă" ; // Parola pentru autorizare pe serverul SMTP$mail_from = " [email protected]" ; // Cutia poștală din care este trimisă scrisoarea$sock = fsockopen($smtp_server , $smtp_port , $errno , $errstr , 30 ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ("Socketul nu este creat\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock , „AUTH LOGIN” ); smtp_msg ($sock , base64_encode ($smtp_user )); smtp_msg ($sock , base64_encode ($smtp_parola )); smtp_msg($sock , "MAIL FROM:<" . $mail_from . ">" ); smtp_msg ($sock , "RCPT TO:<" . $reciever . ">" ); smtp_msg ($sock , "DATE" ); $headers = "Subiect: " . $subiect . "\r\n" . $headers ; $date = $headers . "\r\n\r\n" . $conținut . „\r\n.” ; smtp_msg ($sock , $data ); smtp_msg ($sock , „QUIT” ); fclose ($sock ); ) funcția smtp_msg ($sock , $msg ) ( dacă ( ! $sock ) ( printf ("Socket rupt!\n" ); exit(1 ); ) if (isset($_SERVER [ "depanare" ]) && $_SERVER [ "depanare" ]) ( printf ("Trimite de la noi :%s
" , nl2br (htmlspecialchars ($msg ))); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ("Socket") este oprit\n" ); exit(1 ); ) else ( if (isset($_SERVER [ "depanare" ]) && $_SERVER [ "depanare" ]) ( printf ("Ați primit de la server: %s
" , nl2br (htmlspecialchars ($str ))); ) $e = explode (" " , $str ); $code = array_shift ($e ); $str = implod (" " , $e ); dacă ($cod > 499 ) ( printf ( „Probleme cu conversația SMTP.

Codul %d.
Mesaj %s
"
, $cod , $str ); ieșire(1); ) ) ) ?>

Descărcați un exemplu de script finalizat cu funcția MailSmtp(): smtpauth.php.sample

Puteți folosi funcția MailSmtp() descrisă mai sus pentru a înlocui direct funcția mail(), luați în considerare un exemplu de cea mai simplă formă în PHP:

// Antetele mesajelor, ele definesc codificarea mesajului, câmpurile De la, Către etc.$headers = "Versiune MIME: 1.0\r\n" ; $headers .= „Tip de conținut: text/html; set de caractere=windows-1251\r\n”; $headers .= "Către: $la \r\n" ; $headers .= „De la: Numele expeditorului " ; // mail ($la, $subiect, $mesaj, $anteturi); require_once "smtpauth.php"; MailSmtp ($to , $subiect , $mesaj , $headers ); ) ?>
La care: Subiect: Text: 
 
 

Pentru a forma dată a funcționat fără funcția mail(), am inclus fișierul smtpauth.php prin require_once și am numit funcția MailSmtp() descrisă în acesta, cu argumente similare cu mail(). În același timp, am comentat apelul mail() în cod pentru a evita o eroare la executarea scriptului.

Cum se trimit e-mailuri folosind ASP.NET?

Dacă utilizați versiunea 2.0, atunci utilizați clasa MailMessage System.Net.Mail), bine descris.

Mai jos sunt exemple de utilizare a acestuia pentru limbile „C#” și „VisualBasic”:

Exemplu pentru limbajul „C#”:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // creează o literă nouă mesaj.Pentru.Adăugare(" [email protected]"); // adăugarea adresei destinatarului mesaj.De la = new MailAddress(" [email protected]domeniu.tld", "Numele expeditorului"); // precizând numele și adresa expeditorului message.Subject = „Subiect”; // indicarea subiectului scrisorii message.BodyEncoding = System.Text.Encoding.UTF8; // specificând codificarea literelor mesaj.IsBodyHtml = fals; // specificând formatul literei (adevărat - HTML, fals - nu HTML) message.Body = „Corpul mesajului”; // precizând textul (corpul) scrisorii Client SmtpClient = SmtpClient nou("smtp.site",25); // creează o nouă conexiune la serverul „smtp.site”. client.DeliveryMethod = SmtpDeliveryMethod.Network; // definește metoda de trimitere a mesajelor client.EnableSsl = false; // dezactivează necesitatea utilizării unei conexiuni securizate la server client.UseDefaultCredentials = fals; // dezactivează utilizarea detaliilor de autorizare „în mod implicit” client.Credentials = new NetworkCredential(" [email protected]domeniu.tld", "***parola***"); // specificarea detaliilor necesare (nume de utilizator și parola) pentru autorizare pe serverul SMTP client.Trimite(mesaj); // Trimite mesaj %>

Descărcați un exemplu de formular finalizat care demonstrează utilizarea acestei metode: MailForm.aspx .

Exemplu pentru limbajul „VisualBasic”:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("[email protected]domeniu.tld", "SenderName") smtpMssg.To.Add(" [email protected]") „ Adăugați adresa destinatarului smtpMssg.Subject = „Subiect” „indicând subiectul scrisorii smtpMssg.Body = „Corpul mesajului” " cu precizarea textului (corpului) scrisorii smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 „indicând codificarea literei smtpMssg.IsBodyHtml = fals " indicarea formatului literei (adevărat - HTML, fals - nu HTML) Dim SmtpMail ca SmtpClient nou ("smtp.site", 25) " declararea unui nou obiect de tip "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network ", specificând metoda de livrare a mesajului SmtpMail.UseDefaultCredentials = Fals " dezactivați utilizarea detaliilor de autorizare "în mod implicit" SmtpMail.EnableSsl = Fals „dezactivează necesitatea utilizării unei conexiuni securizate la server SmtpMail.Credentials = nou NetworkCredential(" [email protected]domeniu.tld", "***parola***") " cu specificarea detaliilor necesare (nume de utilizator și parola) pentru autorizarea pe serverul SMTP SmtpMail.Send(smtpMssg) „trimiterea unui mesaj %>

Există, de asemenea, o clasă SmtpMail depreciată (și depreciată) (folosind spațiul de nume System.Web.Mail). Mai jos este un exemplu de utilizare a acestuia pentru limbajul „VisualBasic”:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " declararea unui nou obiect de tip "MailMessage" smtpMssg.From = „Nume expeditor domeniu.tld>" " cu precizarea numelui și adresei expeditorului smtpMssg.to=" [email protected]domeniu.tld" " cu specificarea adresei destinatarului smtpMssg.BodyFormat = MailFormat.Text „indicând formatul scrisorii smtpMssg.BodyEncoding = Encoding.UTF8 „indicând codificarea literei smtpMssg.Subject = „Subiect” „indicând subiectul scrisorii smtpMssg.Body = „Corpul mesajului” „indicând textul scrisorii smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) " care specifică necesitatea autorizării SMTP pe server smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", " [email protected]domeniu.tld") "nume de utilizator de conectare smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***parola***") "Parola de logare SmtpMail.SmtpServer = „smtp.site” "specificați adresa serverului SMTP SmtpMail.Send(smtpMssg) „trimiterea unui mesaj %>

Cum se trimit e-mailuri folosind ASP?

Vă rugăm să rețineți că atunci când utilizați serverul nostru smtp, este necesară autorizarea, așa că nu uitați să adăugați detaliile de acces adecvate la script, de exemplu:

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]domeniu.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "parolă" .Actualizare Încheiere cu Set cdoMessage = CreateObject("CDO.Message") Cu set cdoMessage .Configuration = iConfig .From = „Testează utilizatorul domeniu.tld>" .To = "Utilizator " .Subject = "Bună, utilizator" .TextBody = "Scriu acest mesaj din scriptul ASP." .Send End With Set cdoMessage = Nimic Set iConfig = Nimic %>

Unele CMS au deja instrumente încorporate pentru trimiterea corespondenței sau modulele corespunzătoare, să considerăm cele mai populare dintre ele.

Wordpress

Pentru acest CMS, există un modul special „WP Mail SMTP”, un exemplu de configurare a acestuia este descris pe pagina modulului.

Atenție la ilustrația din exemplu, în condițiile sistemului nostru de poștă, este necesar portul 25 și nu este necesară criptarea SSL.

Joomla

În panoul de administrare, accesați secțiunea „Setări generale”, selectați fila „Server”. În câmpul „Poștă” trebuie să selectați metoda de trimitere ca „Server SMTP”, În câmpurile „Adresă server SMTP”Și” Autentificare SMTP”Și” Parolă SMTP”Introduceți detaliile corespunzătoare ale sistemului de e-mail, de exemplu: smtp.site, cutie poștală@domeniul_dvs si corespunzatoare parola.

Drupal

Acest CMS are, de asemenea, propriul modul de lucru cu serverul SMTP, bazat pe PHPmailer. Puteți descărca acest modul de pe pagina sa de pe site-ul CMS Drupal, descrierea instalării modulului este disponibilă în arhiva cu acesta.

NetCat

Acest CMS nu are funcții încorporate pentru lucrul cu serverul SMTP. Pentru a trimite mail prin scripturi de site, vă putem oferi să utilizați soluția noastră, pentru a o conecta, trebuie să efectuați următorii pași:

  • Descărcați de pe site-ul nostru o arhivă cu fișierele necesare ( send_auth_mail.phpȘi mail.inc.php) și despachetați-l pe computer;
  • Editați fișierul send_auth_mail.php din arhivă, specificând detaliile conexiunii la serverul SMTP dorit în ea:

    • $mail_smtpServer = „smtp.site”; (adresa serverului SMTP)
    • $mail_port = "25" ; (port de conectare)
    • $mail_username = "[email protected]" ; (nume de utilizator pentru autorizare pe serverul SMTP)
    • $mail_parola = "Parola"; (parola pentru autorizare pe serverul SMTP)
  • Creați o copie de rezervă a fișierului domain.tld/www/netcat/admin/mail.inc.php;
  • descărcați fișiere send_auth_mail.phpȘi mail.inc.php la site-ul virtual la director domain.tld/www/netcat/admin/

domeniu.tld ar trebui înlocuit cu numele dvs. de domeniu.

Soluția propusă funcționează cu toate modulele NetCat care utilizează funcțiile standard ale acestui CMS pentru a trimite e-mail.