Cum se trimite e-mail folosind funcția PHP mail().
⚡ Rezumat inteligent
PHP mail este funcția încorporată care trimite e-mailuri direct dintr-un script PHP folosind setările SMTP ale serverului. Această prezentare prezintă sintaxa și parametrii mail(), configurarea SMTP în php.ini, curățarea datelor introduse de utilizator cu filter_var, trimiterea de e-mailuri securizate și utilizarea PHP.Mailpentru o livrare fiabilă.

Ce este poșta PHP?
PHP mail este funcția PHP încorporată care este utilizată pentru a trimite e-mailuri din scripturi PHP.
Funcția de e-mail acceptă următorii parametri:
- Adresă de e-mail
- Subiect
- Mesaj
- Adresele de e-mail CC sau BCC
De ce și când să folosești PHP Mail
Funcția de e-mail este utilă în multe situații:
- Este o modalitate eficientă din punct de vedere al costurilor de a notifica utilizatorii despre evenimente importante.
- Permiteți utilizatorilor să vă contacteze prin e-mail, furnizând un formular de contact pe site-ul web care trimite prin e-mail conținutul furnizat.
- Dezvoltatorii îl pot folosi pentru a primi erori de sistem prin e-mail.
- Îl puteți folosi pentru a trimite e-mail abonaților la newsletter.
- Îl poți folosi pentru a trimite linkuri de resetare a parolei utilizatorilor care și-au uitat parolele.
- Îl poți folosi pentru a trimite prin e-mail linkuri de activare și confirmare. Acest lucru este util la înregistrarea utilizatorilor și la verificarea adreselor lor de e-mail.
Trimiterea de mail folosind PHP
Funcția PHP mail are următoarea sintaxă de bază.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
AICI,
- „$to_email_address” este adresa de e-mail a destinatarului e-mailului
- „$subject” este subiectul e-mailului
- „$message” este mesajul care trebuie trimis.
- „[$headers]” este opțional; poate fi folosit pentru a include informații precum CC și BCC.
- CC este acronimul pentru copie carbon. Se folosește atunci când doriți să trimiteți o copie unei persoane interesate, adică un e-mail de reclamație trimis unei companii poate fi trimis și ca CC către forumul de reclamații.
- BCC este acronimul pentru copie carbon ascunsă. Este similar cu CC, dar adresele de e-mail incluse în secțiunea BCC nu sunt afișate celorlalți destinatari.
simplu Mail Transmission Protocol (SMTP)
Mail-ul PHP folosește Simple Mail Transmission Protocol (SMTP) pentru a trimite e-mail.
Pe un server găzduit, setările SMTP ar fi fost deja configurate.
Setările de e-mail SMTP pot fi configurate din fișierul „php.ini” din folderul de instalare PHP.
Pentru a configura setările SMTP pe localhost, presupunând că utilizați XAMPP pe Windows, localizați fișierul „php.ini” în directorul „C:\xampp\php”.
- Deschideți-l folosind Notepad sau orice editor de text. Vom folosi Notepad în acest exemplu. Faceți clic pe meniul Editare.
- Faceți clic pe meniul Găsire…
- Va apărea caseta de dialog Căutare
- Faceți clic pe butonul Găsiți următorul
Localizați intrările de sub [funcția mail]. Liniile implicite arată de obicei astfel:
- ; SMTP = gazdă locală
- ; smtp_port = 25
Eliminați punct și virgulă înainte de SMTP și smtp_port și setați SMTP la adresa dvs. Server SMTP și portul către portul SMTP. Setările ar trebui să arate astfel:
- SMTP = smtp.example.com
- smtp_port = 25
Notă: setările SMTP pot fi obținute de la furnizorul dvs. de găzduire web. Dacă serverul necesită autentificare, adăugați următoarele linii:
- auth_username = example_username@example.com
- auth_password = exemplu_parolă
Salvați noile modificări și reporniți Apache Server.
PHP Mail Exemplu
Să luăm acum un exemplu de trimitere a unui e-mail simplu.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
ieșire:
Notă: exemplul de mai sus acceptă doar cei 4 parametri obligatorii. Trebuie să înlocuiți adresa de e-mail fictivă de mai sus cu o adresă de e-mail reală.
Dezinfectarea intrărilor utilizatorilor de e-mail
Exemplul de mai sus folosește valori codificate în codul sursă pentru adresa de e-mail și alte detalii pentru simplitate.
Să presupunem că trebuie să creați un formular de contact în care utilizatorii completează detaliile și apoi îl trimit.
- Utilizatorii pot injecta accidental sau intenționat cod în anteturi, ceea ce poate duce la trimiterea de e-mailuri spam.
- Pentru a vă proteja sistemul de astfel de atacuri, puteți crea o funcție personalizată care igienizează și validează valorile înainte ca e-mailul să fie trimis.
Să creăm o funcție personalizată care validează și curăță adresa de e-mail folosind funcția încorporată filter_var. Funcția filter_var este utilizată pentru a curăța și valida datele introduse de utilizator.
Are următoarea sintaxă de bază.
<?php filter_var($field, SANITIZATION_TYPE); ?>
AICI,
- „filter_var(…)” este funcția de validare și dezinfectare
- „$field” este valoarea câmpului care trebuie filtrat.
- „TIP_IGIENIZARE” este tipul de igienizare care va fi efectuată pe teren, cum ar fi:
- FILTER_VALIDATE_EMAIL – returnează „true” pentru adrese de e-mail valide și „false” pentru adrese de e-mail nevalide.
- FILTER_SANITIZE_EMAIL – elimină caracterele ilegale din adresele de e-mail, astfel încât o adresă cu caractere rătăcite este redusă la info@domeniu.com.
- FILTRARE_DEZERBIERE_URL – elimină caracterele ilegale din URLs, lăsând o adresă curată, cum ar fi https://www.example.com.
- FILTER_SANITIZE_STRING – elimină etichetele din valorile șirurilor de caractere, astfel încât am bold devine am bold. Rețineți că acest filtru este depreciat în PHP 8.1; utilizați în schimb htmlspecialchars().
Codul de mai jos folosește o funcție personalizată pentru a trimite e-mailuri securizate.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
ieșire:
Asigura Mail
E-mailurile pot fi interceptate în timpul transmiterii de către destinatari neintenționați.
Acest lucru poate expune conținutul e-mailului unor destinatari neintenționați.
Poșta securizată rezolvă această problemă prin transmitTrimiterea de e-mailuri printr-o conexiune criptată folosind SSL sau TLS, de exemplu SMTP prin SSL pe portul 465 sau STARTTLS pe portul 587.
Criptarea codifica mesajul înainte de a-l trimite, astfel încât numai serverul de mail al destinatarului îl poate citi.
PHPMailer: O alternativă mai bună la mail()
Pentru aplicații reale, majoritatea dezvoltatorilor folosesc PHPMailbiblioteca er în loc de funcția mail() brută. PHPMailse autentifică cu un server SMTP extern, ceea ce îmbunătățește considerabil livrabilitatea și simplifică atașamentele și e-mailurile HTML.
Instalați-l cu Composer, apoi trimiteți e-mail printr-o conexiune SMTP autentificată și criptată, așa cum se arată mai jos.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Comparativ cu mail(), PHPMailer vă oferă autentificare SMTP, criptare încorporată, suport pentru atașamente și o gestionare mai clară a erorilor, motiv pentru care este alegerea recomandată pentru e-mailurile de producție.






