mb_send_mail în PHP

Trimite un email ca mail(), dar codează automat subiectul și corpul mesajului după limba setată cu mb_language.

Sintaxă
mb_send_mail(string $to, string $subject, string $message, array|string $additional_headers = [], ?string $additional_params = null): bool

Ce face mb_send_mail

mb_send_mail codează subiectul cu mb_encode_mimeheader, convertește mesajul și adaugă antetele Content-Type și Content-Transfer-Encoding potrivite. Cu mb_language("uni") mesajele sunt trimise în UTF-8.

Ca și mail, are nevoie de un server de email configurat (de exemplu sendmail). Pentru aplicații serioase se folosesc biblioteci ca PHPMailer sau Symfony Mailer, cu SMTP.

Parametri

Parametru Descriere
$to Adresa destinatarului.
$subject Subiectul (poate avea diacritice).
$message Textul mesajului.
$additional_headers Opțional. Antete suplimentare, de exemplu From.
$additional_params Opțional. Parametri pentru programul sendmail.

Ce returnează

true dacă mesajul a fost predat serverului de email, altfel false.

Exemple

Exemplul 1: Confirmare de comandă

Exemplul are nevoie de un server de email, deci nu rulează aici. true înseamnă doar că mesajul a fost acceptat pentru trimitere, nu că a ajuns.

<?php
mb_language("uni");

$trimis = mb_send_mail(
    "ana@exemplu.ro",
    "Comanda ta a fost confirmată",
    "Bună, Ana!\nComanda #1024 pleacă azi spre Iași.",
    ["From" => "magazin@exemplu.ro"]
);
var_dump($trimis);

Rezultat posibil (depinde de serverul de email)

bool(true)

Greșeli frecvente

  • Pui în $to sau în antete date introduse de utilizator fără verificare. Un atacator poate adăuga destinatari prin linii noi. Validează adresele cu filter_var($email, FILTER_VALIDATE_EMAIL).

Comenzi înrudite

  • mb_encode_mimeheader / mb_decode_mimeheader: Codează un text pentru un antet de email (de exemplu subiectul cu diacritice); mb_decode_mimeheader îl decodează.
  • mb_language: Setează sau returnează limba folosită de mbstring la codarea emailurilor trimise cu mb_send_mail.