Funkcja mail() jest wbudowana w PHP i służy do wysyłania e-maili bezpośrednio z serwera internetowego. To prosty sposób na wysyłanie powiadomień, wiadomości z formularzy kontaktowych, potwierdzeń zamówień i innych typów wiadomości.

Odpowiednia do podstawowej funkcjonalności e-mail bez użycia zewnętrznych bibliotek.

Jak działa mail()

Kiedy wywołujesz funkcję mail(), PHP przekazuje e-mail do agenta transferu poczty (MTA) zainstalowanego na serwerze (zwykle Sendmail lub Postfix). MTA następnie przetwarza i dostarcza wiadomość na wskazany adres.

 Składnia

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

 Parametry

ParametrOpis
$toAdres e-mail odbiorcy. Możesz podać wiele adresów oddzielonych przecinkami.
$subjectTemat e-maila. Nie może zawierać łamań linii.
$messageGłówna treść wiadomości.
$headersDodatkowe nagłówki, takie jak From, Reply-To, Cc, Bcc itp.
$parametersDodatkowe parametry, takie jak określenie nadawcy dla Sendmail (-f).

Prosty przykład

<?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);
?>

 Ważne uwagi

1. Nagłówek From: jest wymagany

Jeśli nie określisz nagłówka From:, większość serwerów pocztowych odrzuci wiadomość jako podejrzaną lub spam.

$headers = "From: noreply@yourdomain.com";

2. Formatowanie wiadomości wieloliniowych

Użyj rn, aby oddzielić linie w swojej wiadomości:

$message = "Hello,rnrnThank you for your order.rnrnBest regards,rnYour Team";

3. Wiele nagłówków

Użyj rn, aby oddzielić wiele nagłówków, takich jak Reply-To, Cc i Bcc:

$headers = "From: admin@yourdomain.comrn";
$headers .= "Reply-To: support@yourdomain.comrn";
$headers .= "Cc: someone@yourdomain.comrn";

Przykład: Wysyłanie e-maila HTML (tylko tekst)

Funkcja mail() nie obsługuje załączników natywnie. Ale możesz wysyłać e-maile HTML lub ręcznie ustawić typ treści:

$headers  = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=UTF-8rn";
$headers .= "From: info@yourdomain.com";
$message = "<h1>Hello!</h1><p>Your order has been received.</p>";
mail("user@example.com", "Order Confirmation", $message, $headers);

 Typowe problemy i rozwiązania

ProblemPrzyczyna / Rozwiązanie
Wiadomość e-mail nie została dostarczonaBrak nagłówka From: lub adres IP serwera znajduje się na czarnej liście
Wiadomość e-mail w ogóle się nie wysyłaBrak zainstalowanego MTA (wymagany np. Sendmail/Postfix)
Błąd: mail() został wyłączonymail() jest wyłączony w php.ini (często przez politykę hosta)
Rosyjski tekst pojawia się jako ????Charset nie jest ustawiony na UTF-8 w nagłówkach
Wiadomości e-mail trafiają do spamuNieprawidłowy From, brak SPF/DKIM lub źle skonfigurowana domena

 Podsumowanie

Funkcja mail() jest podstawowym, ale potężnym narzędziem do wysyłania e-maili bezpośrednio z skryptów PHP. Jest:

  • Łatwa w użyciu
  • Nie wymaga dodatkowych bibliotek
  • Odpowiednia do wewnętrznych powiadomień, formularzy kontaktowych i autoresponderów

Jednak pamiętaj o jej ograniczeniach:

  • Zależy od konfiguracji poczty serwera
  • Nie obsługuje załączników
  • Może być domyślnie wyłączona w niektórych środowiskach hostingu współdzielonego

Jeśli planujesz regularnie wysyłać e-maile, upewnij się, że twój serwer jest odpowiednio skonfigurowany do wysyłania poczty (z zainstalowanym Sendmail/Postfix, skonfigurowanymi rekordami SPF/DKIM oraz włączoną funkcją mail() w php.ini).