Lucrul cu e-mail-ul. Expediere programată de e-mail folosind diverse servicii Trimiteți un mesaj către e-mail c
Trimiteți programatic e-mail folosind diverse servicii
- .NET,
De foarte multe ori trebuie să aveți de-a face cu trimiterea e-mailuri din codul programului. Nu trebuie să mergeți departe pentru exemple.
Acest articol este un indiciu și nu dezvăluie nimic nou, dar înainte de a-l scrie, m-am uitat la ceva similar pe Internet și am fost mai degrabă surprins că aproape oriunde oferă fie o soluție care nu funcționează sau depășește, fie că este scris pur și simplu analfabet.
Primul lucru care nu trebuie făcut cu aceste exemple este să utilizați System.Web.Mail, care a fost depreciat de mult timp și începând cu Studio vizual 2010, nici măcar nu puteți adăuga biblioteca System.Web fără să cunoașteți calea completă către DLL-ul corespunzător.
În schimb, se sugerează utilizarea bibliotecii System.Net.
folosind System.Net; folosind System.Net.Mail;
Deci, cel mai simplu, este cel mai important și adesea folosit este trimiterea unei scrisori de la dvs. server de mail pe care este configurat clientul SMTP. După cum ați înțeles, serverul poate fi fie cel pe care rulează aplicația, fie unul la distanță, pe care aveți dreptul de a trimite scrisori fără autorizație suplimentară.
Exemplu de cod pentru trimiterea unei scrisori de la o mașină locală:
Folosind servicii poștale precum Gmail, Yandex, Mail.ru etc. totul este la fel, se adaugă numai parametrii cu autorizație.
Server SMTP: smtp.gmail.com
Port: 587
folosind (MailMessage mm = new MailMessage ("Nume
Server SMTP: smtp.yandex.ru
Port: 25
folosind (MailMessage mm = new MailMessage ("Nume
Server SMTP: smtp.mail.ru
Port: 25
folosind (MailMessage mm = new MailMessage ("Nume
Daca ai cutie poștală pe serviciul mail.ru se termină cu inbox.ru, list.ru sau bk.ru, apoi adresa serverului SMTP (smtp.inbox.ru, smtp.list.ru și smtp.bk.ru) se modifică corespunzător.
După cum puteți vedea, pentru a utiliza orice alt serviciu de e-mail în programele dvs., trebuie doar să aflați adresa și portul serverului SMTP, precum și regulile de autorizare.
De asemenea, trebuie amintit faptul că aproape toți terții servicii poștale impune limite numărului de e-mailuri trimise într-o perioadă de timp.
Etichete: e-mail, trimiterea de e-mailuri, smtp
Una dintre cele mai solicitate funcții de pe site este formularul de cerere sau de comandă, ale cărui date sunt trimise prin poștă proprietarului site-ului. De regulă, astfel de formulare sunt simple și constau din două sau trei câmpuri pentru introducerea datelor. Cum creați un astfel de formular de comandă? Acest lucru va necesita utilizarea limbajului Marcare HTMLși limbajul de programare PHP.
Limbajul de marcare HTML în sine este simplu, trebuie doar să vă dați seama cum și unde să puneți anumite etichete. Cu limbajul de programare PHP, lucrurile sunt puțin mai complicate.
Nu va fi dificil pentru un programator să creeze un astfel de formular, dar pentru un coder HTML, unele acțiuni pot părea dificile.
Creați un formular pentru trimiterea datelor în html
Prima linie va fi următoarea
Acum să punem totul împreună.
Acum vom face ca câmpurile din formular să fie obligatorii. Avem următorul cod:
Creați un fișier care acceptă date dintr-un formular HTML
Acesta va fi un fișier numit send.php
În fișier, în prima etapă, trebuie să acceptați date din tabloul de postări. Pentru a face acest lucru, creăm două variabile:
$ fio = $ _POST ["fio"];
$ email = $ _POST ["email"];
Numele variabilelor PHP sunt precedate de un semn $ și un punct și virgulă la sfârșitul fiecărei linii. $ _POST este un tablou către care sunt transmise datele din formular. În formularul html, metoda de trimitere este specificată ca metodă = "postare". Deci, sunt preluate două variabile formulare html... În scopul protejării site-ului dvs., trebuie să treceți aceste variabile prin mai multe filtre - funcții php.
Prima funcție convertește toate caracterele pe care utilizatorul încearcă să le adauge la formular:
În acest caz, nu sunt create noi variabile în php, dar sunt utilizate cele existente. Ce va face filtrul este să convertească caracterul "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
A doua funcție va decoda adresa URL dacă utilizatorul încearcă să o adauge la formular.
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
În a treia funcție, vom elimina spațiile de la începutul și sfârșitul șirului, dacă există:
$ fio = trim ($ fio);
$ email = trim ($ email);
Există și alte funcții pentru a filtra variabilele php. Utilizarea lor depinde de cât de mult vă temeți că un atacator va încerca să adauge cod la această formă de trimitere de date către e-mail html.
Validarea datelor transmise din formularul HTML în fișierul PHP
Pentru a verifica dacă acest cod funcționează, dacă datele sunt transmise, îl puteți afișa pur și simplu pe ecran folosind funcția de ecou:
echo $ fio;
ecou "
";
echo $ email;
A doua linie este aici pentru a împărți ieșirea variabilelor php în linii diferite.
Trimiterea datelor primite din formularul HTML la e-mail prin PHP
Pentru a trimite date la e-mail, trebuie să utilizați funcția de e-mail în PHP.
mail („la care adresă trebuie trimisă”, „subiectul scrisorii”, „Mesaj (corpul mesajului)”, „De la: din care e-mail este trimisă scrisoarea \ r \ n”);
De exemplu, trebuie să trimiteți date către e-mailul proprietarului sau managerului site-ului [e-mail protejat]
Subiectul e-mailului trebuie să fie clar, iar mesajul e-mail trebuie să conțină ceea ce a specificat utilizatorul în formularul HTML.
Poștă (" [e-mail protejat]"," Aplicație de pe site "," Numele complet: ". $ Fio.". E-mail: ". $ E-mail," De la: [e-mail protejat]\ r \ n ");
Trebuie să adăugați o condiție care va verifica dacă formularul a fost trimis folosind PHP la adresa de e-mail specificată.
if (mail („ [e-mail protejat]"," Comanda de pe site "," Numele complet: ". $ Fio.". E-mail: ". $ E-mail," De la: [e-mail protejat]\ r \ n "))
{
ecou „mesaj trimis cu succes”;
) altceva (
}
Astfel, codul de program al fișierului send.php care va trimite datele formularului HTML la poștă va arăta astfel:
$ fio = $ _POST ["fio"];
$ email = $ _POST ["email"];
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = trim ($ fio);
$ email = trim ($ email);
// ecou $ fio;
// ecou "
";
// ecou $ email;
if (mail („ [e-mail protejat]"," Aplicație de pe site "," Numele complet: ". $ Fio.". E-mail: ". $ E-mail," De la: [e-mail protejat]\ r \ n "))
(ecou „mesaj trimis cu succes”;
) altceva (
ecou „au apărut erori în timpul trimiterii mesajului”;
}?>
Trei linii pentru a verifica dacă datele trecute la fișier sunt comentate. Dacă este necesar, le puteți elimina, deoarece acestea erau necesare numai pentru depanare.
Punerea codului HTML și PHP pentru trimiterea formularului într-un singur fișier
În comentariile la acest articol, mulți oameni se întreabă cum se realizează atât formularul HTML, cât și codul PHP pentru trimiterea datelor către e-mail într-un singur fișier, nu în două.
Pentru a implementa o astfel de lucrare, trebuie să puneți codul HTML al formularului în fișierul send.php și să adăugați o condiție care va verifica prezența variabilelor în matricea POST (această matrice este transmisă din formular). Adică, dacă variabilele din matrice nu există, atunci trebuie să arătați formularul utilizatorului. În caz contrar, trebuie să acceptați date din matrice și să le trimiteți destinatarului.
Să vedem cum să schimbăm codul PHP în fișierul send.php:
// verificați dacă variabilele există în matricea POST
if (! isset ($ _ POST ["fio"]) și! isset ($ _ POST ["email"]))) (
?> ) altceva (
// arată forma
$ fio = $ _POST ["fio"];
$ email = $ _POST ["email"];
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = trim ($ fio);
$ email = trim ($ email);
if (mail (" [e-mail protejat]"," Aplicație de pe site "," Numele complet: ". $ Fio.". E-mail: ". $ E-mail," De la: [e-mail protejat]\ r \ n ")) (
ecou „Mesaj trimis cu succes”;
) altceva (
ecou „Au fost erori la trimiterea mesajului”;
}
}
?>
Verificăm existența unei variabile în matricea POST utilizând funcția PHP isset (). Un semn de exclamare înaintea acestei funcții într-o condiție înseamnă negare. Adică, dacă variabila nu există, atunci trebuie să ne arătăm forma. Dacă nu aș fi pus un semn de exclamare, atunci condiția ar însemna literalmente - „dacă există, atunci arată forma”. Și acest lucru este greșit în cazul nostru. Bineînțeles, îl puteți redenumi în index.php. Dacă redenumiți fișierul, nu uitați să redenumiți numele fișierului și în linie