Funcția mail() este încorporată în PHP și este utilizată pentru a trimite e-mailuri direct de pe un server web. Este o modalitate simplă de a trimite notificări, mesaje din formularul de contact, confirmări de comandă și alte tipuri de mesaje.

Potrivit pentru funcționalitatea de bază a e-mailului fără a utiliza biblioteci externe.

Cum funcționează mail()

Atunci când apelați funcția mail(), PHP transmite e-mailul către agentul de transfer de e-mail (MTA) instalat pe server (de obicei Sendmail sau Postfix). Apoi, MTA procesează și livrează mesajul la adresa specificată.

Sintaxă

mail(to, subject, message, headers, parameters);

Parametri

ParametruDescriere
$toAdresa de e-mail a destinatarului. Puteți specifica mai multe adrese separate prin virgulă.
$subiectSubiectul e-mailului. Nu trebuie să conțină întreruperi de linie.
$messageCorpul principal al mesajului.
$headersAntete suplimentare precum From, Reply-To, Cc, Bcc etc.
$parametersParametri suplimentari, cum ar fi specificarea expeditorului pentru Sendmail (-f).

Exemplu simplu

<?php
$to = "user@example.com";
$subject = "Test Email";
$message = "Hello! This is a test email sent using PHP.";
$headers = "From: webmaster@yourdomain.com";

mail($to, $subject, $message, $headers);
?> 

Note importante

1. De la: Antetul este necesar

Dacă nu specificați un antet From:, majoritatea serverelor de e-mail vor respinge mesajul ca fiind suspect sau spam.

$headers = "De la: noreply@yourdomain.com";

2. Formatarea mesajelor cu mai multe linii

Utilizați \r\n pentru a separa liniile din mesaj:

$message = "Bună ziua,\r\n\r\nMulțumesc pentru comandă.\r\n\r\nCele mai bune salutări,\r\nEchipa dumneavoastră";

3. Anteturi multiple

Utilizați \r\n pentru a separa mai multe antete precum Reply-To, Cc și Bcc:

$headers = "De la: admin@yourdomain.com\r\n";
$headers .= "Reply-To: support@yourdomain.com\r\n";
$headers .= "Cc: someone@yourdomain.com\r\n";

Exemplu: Trimiterea unui e-mail HTML (numai text)

Funcția mail() nu acceptă atașamente în mod nativ. Dar puteți trimite e-mailuri HTML sau puteți seta manual tipul de conținut:

$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: info@yourdomain.com";
$message = "<h1>Hello!</h1><p>Your order has been received.</p>";
mail("user@example.com", "Order Confirmation", $message, $headers);
Probleme comune și soluții
ProblemaCauză / Soluție
E-mailul nu este livratLipsește antetul From: sau IP-ul serverului este pe o listă neagră
Emailul nu se trimite delocNu este instalat niciun MTA (de exemplu, este necesar Sendmail/Postfix)
Eroare: mail() a fost dezactivatmail() este dezactivat în php.ini (adesea prin politica gazdei)
Textul în limba rusă apare ca ????Setul de caractere nu este setat la UTF-8 în antet
E-mailurile ajung în spamDe la incorect, fără SPF/DKIM sau domeniu configurat greșit

Concluzie

Funcția mail() este un instrument de bază, dar puternic, pentru trimiterea de e-mailuri direct din scripturile PHP. Aceasta este:

  • Ușor de utilizat
  • Nu necesită biblioteci suplimentare
  • Potrivit pentru notificări interne, formulare de contact și autorespondere

Cu toate acestea, țineți cont de limitările sale:

  • Depinde de configurația de e-mail a serverului
  • Nu acceptă atașamente
  • Poate fi dezactivat în mod implicit în unele medii de găzduire partajată

Dacă intenționați să trimiteți e-mailuri în mod regulat, asigurați-vă că serverul dvs. este configurat corespunzător pentru poșta electronică de ieșire (cu Sendmail/Postfix instalat, înregistrări SPF/DKIM configurate și mail() activat în php.ini).