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.
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ă.
mail(to, subject, message, headers, parameters);
Parametru | Descriere |
---|---|
$to | Adresa de e-mail a destinatarului. Puteți specifica mai multe adrese separate prin virgulă. |
$subiect | Subiectul e-mailului. Nu trebuie să conțină întreruperi de linie. |
$message | Corpul principal al mesajului. |
$headers | Antete suplimentare precum From, Reply-To, Cc, Bcc etc. |
$parameters | Parametri suplimentari, cum ar fi specificarea expeditorului pentru Sendmail (-f). |
<?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);
?>
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";
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ă";
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";
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
Problema | Cauză / Soluție |
---|---|
E-mailul nu este livrat | Lipsește antetul From: sau IP-ul serverului este pe o listă neagră |
Emailul nu se trimite deloc | Nu este instalat niciun MTA (de exemplu, este necesar Sendmail/Postfix) |
Eroare: mail() a fost dezactivat | mail() 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 spam | De la incorect, fără SPF/DKIM sau domeniu configurat greșit |
Funcția mail() este un instrument de bază, dar puternic, pentru trimiterea de e-mailuri direct din scripturile PHP. Aceasta este:
Cu toate acestea, țineți cont de limitările sale:
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).