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 face mail(): Funcția mail() trimite un e-mail dintr-un script, preluând destinatarul, subiectul, mesajul și anteturile opționale.
  • 📨 Transport SMTP: Mail-ul PHP se bazează pe SMTP, a cărui gazdă, port și autentificare sunt setate în fișierul de configurare php.ini.
  • 📋 CC și BCC: Anteturile opționale adaugă destinatari în copie carbon și copie carbon ascunsă, BCC fiind ascuns de ceilalți destinatari.
  • 🛡️ Igienizare intrare: filter_var cu FILTER_SANITIZE_EMAIL și FILTER_VALIDATE_EMAIL blochează injectarea antetului din datele introduse în formularul de contact.
  • 🔒 Asigura Mail: Criptarea conexiunii cu SSL sau TLS protejează conținutul mesajelor împotriva citirii în tranzit.
  • 🧰 Folosiți PHPMailer: PHPMailer adaugă autentificare SMTP, atașamente și e-mail HTML, ceea ce îl face mai fiabil decât raw mail().
  • 🤖 Asistență AI: Instrumentele de inteligență artificială pot configura PHPMailcu SMTP și sugerează soluții pentru a împiedica e-mailurile tale să ajungă în folderul de spam.

PHP Mail

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.

simplu Mail Transmission Protocol

  • Faceți clic pe meniul Găsire…

simplu Mail Transmission Protocol

  • Va apărea caseta de dialog Căutare

simplu Mail Transmission Protocol

  • Faceți clic pe butonul Găsiți următorul

simplu Mail Transmission Protocol

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:

simplu Mail Transmission Protocol

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:

Dezinfectarea intrărilor utilizatorilor de e-mail

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.

Întrebări frecvente

Cea mai frecventă cauză este lipsa unui server de mail configurat pe localhost. Setați valorile SMTP corecte în php.ini sau utilizați PHP.Mailer cu un cont SMTP autentificat. Verificați și jurnalul de erori al serverului și folderul de spam.

Adăugați anteturi care setează MIME-Version la 1.0 și Content-Type la text/html, apoi puneți markup HTML în corpul mesajului. PHPMailer gestionează acest lucru automat atunci când setezi opțiunea sa isHTML(true).

FILTER_SANITIZE_STRING este depreciat de la PHP 8.1. Folosește htmlspecialchars() pentru a afișa ieșirea sau un validator specific, cum ar fi FILTER_VALIDATE_EMAIL, în funcție de dacă curăți sau verifici valoarea.

Da. Dați-i companiei AI gazda SMTP, portul și tipul de securitate, iar aceasta poate genera codul PHP complet.MailConfigurarea serverului cu autentificare, un expeditor, destinatari și gestionarea erorilor. Stocați acreditările în variabile de mediu, nu în cod.

Da. Inteligența artificială poate oferi consultanță privind înregistrările SPF, DKIM și DMARC, utilizând un expeditor SMTP autentificat, evitând cuvintele declanșatoare de spam și setând o adresă de expeditor validă, apoi ajutându-vă să testați livrabilitatea.

Rezumați această postare cu: