Transakcyjne i formularze8 min czytania

Funkcja PHP mail() nie działa — jakie są alternatywy

Jeśli wysyłasz transakcyjne lub marketingowe maile ze sklepu lub aplikacji opartej na PHP, a widzisz niskie wskaźniki otwarć albo pisma lądują w spamie, problem nie jest w Tobie — to mail() nie radzi sobie z nowoczesnymi wymogami dostarczalności.

Funkcja mail() wbudowana w PHP od dekad wysyła wiadomości przez serwer poczty zainstalowany na Twoim hostingu (zwykle Sendmail albo Postfix). Brzmi rozsądnie — ale w praktyce oznacza to, że każdy hoster dzieli reputację IP-ów poczty między setki lub tysiące stron. Jeden spammer na tym serwerze rujnuje IP dla wszystkich. Duże dostawcy skrzynek odboru (Gmail, Yahoo, Outlook, a w Polsce — WP.pl, Onet, Interia) patrzą teraz na to IP z podejrzliwością. Rezultat: Twoje transakcyjne maile trafiają do spamu mimo że są legalne.

Poniżej opowiadamy, dlaczego mail() zawodzi, jakie są opcje i jak szybko przejść na niezawodny SMTP lub API — zarówno na WordPressie, PrestaShop, jak i własnym kodzie PHP.

Dlaczego PHP mail() jest zawodna

mail() wysyła wiadomości przez lokalny serwer SMTP hostingu. Wygląda to mniej więcej tak:

Twoja aplikacja PHPmail()Lokalne Sendmail/Postfix na serwerze hostaGmail, WP.pl, OnetWidżą IP hosta — niska reputacja(prawie nigdy)❌ Spam folder
Droga maila od mail() — lokalne IP hosta trafia do filtrów spamowych, zamiast do inboxa

Praktyczne konsekwencje:

  • IP hosta dzielony między setkami klientów: jeden spammer rujnuje reputację dla wszystkich.
  • Brak kontroli nad SPF/DKIM: hoster zwykle nie konfiguruje DKIM dla każdego klienta indywidualnie, SPF pokazuje IP hosta, a nie Twojej domeny.
  • Brak monitorowania: nie wiesz, kiedy pismo trafia do spamu, ani do której skrzynki. Żaden raport dostarczalności.
  • Problemy Polskie: WP.pl, Onet i Interia są znane z konserwatywnego filtrowania; bez rozgrzewki domeny i dedykowanego IP trafiają tam od razu do spamu.

Przejście na SMTP — szybki przegląd

Zamiast lokalnego mail(), łączysz się z zewnętrznym serwerem SMTP — najczęściej Twojego dostawcy emaila (np. GetResponse, SendGrid, Mailgun, czy wbudowanego u hostowania typu Brevo).

Korzyści:

  • Dedykowana infrastruktura i IP — Twoja reputacja jest niezależna od innych klientów.
  • Kontrola SPF/DKIM/DMARC — konfigurujesz je dla swojej domeny, serwis zajmuje się resztą.
  • Raportowanie i monitorowanie — widzisz, ile maili trafiło do skrzynek, spamu, zostało odrzuconych.
  • A/B testy i optymalizacja — większość serwisów pozwala eksperymentować z czasem wysyłki, celem itd.
Praktyczna rada
Nawet jeśli wybierzesz taniego dostawcę SMTP (np. tier darmowy SendGrid), zawsze skonfiguruj SPF, DKIM i DMARC dla swojej domeny w DNS. Bez tego Twoja reputacja będzie słaba. Po konfiguracji przetestuj dostarczalność — bieżące seed-adresy pokażą dokładnie do której folderu (Inbox, Spam, Promotions) trafia Twoje pismo. Narzędziem check.live-direct-marketing.online sprawdzisz bezpłatnie w 20+ skrzynkach, w tym lokalnych polskich (WP.pl, Onet, Interia).

Popularne serwisy SMTP i API

Oto sprawdzone opcje dla polskich biznesów. Każdy ma darmowy plan na początek.

GetResponse (polski ESP)

Polska firma z siedzibą w Gdańsku. Oferuje pełny SMTP dla transakcyjek, ma API do programistów.

  • Darmowy plan: 300 maili/dzień, nieograniczone kontakty.
  • Konfiguracja: dedykowany SMTP lub API (REST).
  • SPF/DKIM: automatyczne — GetResponse wstawia do DNS instrukcje.
  • Raportowanie: kliknięcia, otwarcia, bounce'i, skargi.

SendGrid

Globalny, bardzo niezawodny serwis SMTP. Darmowy plan: 100 maili/dzień, na zawsze.

  • Łatwa integracja: REST API, SMTP, biblioteki dla PHP (PHPMailer, SwiftMailer).
  • SPF/DKIM: automatyczne przy weryfikacji domeny.
  • Event webhooks: potwierdzenie dostarczenia, bounce, complaint.

Mailgun

Mocny gracz dla developerów. API-first, ale też SMTP. Darmowy plan: 100 wiadomości/dzień przez 90 dni.

  • PHPMailer i inne biblioteki wspierane natywnie.
  • Logowanie i debugging: co się stało z każdym mailem.

Mailjet

Europejski dostawca (Francja), solidny SMTP dla biznesów. Darmowo: 200 maili/dzień.

  • Obsługa polskiego — dość dobrze znają rynek lokalny.
  • Campaign + Transactional mail — jedno narzędzie do obu.

Konfiguracja dla WordPress (WP Mail SMTP)

Jeśli używasz WordPress i hosta z PHP mail(), najprostsze rozwiązanie to wtyczka WP Mail SMTP.

  1. Zainstaluj i aktywuj wtyczkę WP Mail SMTP by WPForms (darmowa na wp.org).
  2. Przejdź doWP Mail SMTP → Settings.
  3. Wybierz dostawcę (GetResponse, SendGrid, Mailgun, Mailjet).
  4. Wstaw klucz API lub dane dostępu do SMTP — wtyczka zrobi resztę.
  5. Wyślij test — jeśli zadziała, Twoja aplikacja WordPress (WooCommerce, formularze, powiadomienia) już wysyła przez SMTP.

Szczegółową konfigurację krok po kroku znajdziesz w artykule WP Mail SMTP: konfiguracja krok po kroku.

Konfiguracja dla PrestaShop i własnego PHP

PrestaShop

PrestaShop ma wbudowany moduł mailingu. Aby zmienić na zewnętrzny SMTP:

  1. Panel admina → Zaawansowane → Email (lub Ustawienia → Email, w zależności od wersji).
  2. Wyłącz mail() — zmień na „SMTP".
  3. Wstaw dane serwera SMTP z wybranego dostawcy (host, port, login, hasło).
  4. Test wysyłki powinien zadziałać natychmiast.

Własne PHP — PHPMailer (rekomendowane)

Jeśli piszesz aplikację od nowa lub modyfikujesz staróżytny skrypt, użyj biblioteki PHPMailer lub SwiftMailer.

Przykład z PHPMailer + SendGrid:

<?php require 'vendor/autoload.php'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; $mail = new PHPMailer(true); // Konfiguracja SMTP (SendGrid) $mail->isSMTP(); $mail->Host = 'smtp.sendgrid.net'; $mail->SMTPAuth = true; $mail->Username = 'apikey'; // apikey literalnie $mail->Password = 'YOUR_SENDGRID_KEY'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@twoja-domena.pl', 'Twoja firma'); $mail->addAddress('odbiorca@example.com'); $mail->Subject = 'Potwierdzenie zamówienia'; $mail->Body = '&lt;p&gt;Dzień dobry! Zamówienie przyjęte.&lt;/p&gt;'; $mail->isHTML(true); try { $mail->send(); echo 'Pismo wysłane!'; } catch (Exception $e) { echo 'Błąd: ' . $mail->ErrorInfo; } ?>

Zainstaluj PHPMailer przez Composer:

composer require phpmailer/phpmailer

Po implementacji sprawdź czy DNS ma SPF i DKIM — niemal wszystkie serwisy SMTP podają instrukcje.

Testowanie dostarczalności

Po przejściu na SMTP zawsze przetestuj, czy pisma trafiają do skrzynek — a nie do spamu.

Bezpłatne narzędzie check.live-direct-marketing.online pozwala:

  • Wysłać testowe pismo na seed-adresy u 20+ dostawców (Gmail, Yahoo, Outlook, WP.pl, Onet, Interia itp.).
  • Zobaczyć do której folderu trafia — Inbox, Spam, Promotions czy odrzucenie.
  • Sprawdzić SPF, DKIM, DMARC dla Twojej domeny.
  • Obejrzeć screenshot maila w realnym świetle — jak wygląda w Gmail vs. Outlook vs. mobilnie.

Jeśli pisma trafiają do spamu, sprawdź:

  • Czy SPF i DKIM są ustawione prawidłowo w DNS?
  • Czy domena ma dobrą reputację (nie ma na blacklistach)?
  • Czy treść maila nie wyzwala filtry spamowe (wiele linków, słowa kluczowe)?
  • Czy używasz headers unsubscribe — RFC 8058 (Gmail od 2024 tego wymaga dla kampanii masowych)?

Najczęstsze pytania

Czy mogę zastosować SMTP tylko dla niektórych maili, a resztę wysyłać mail()?

Możesz, ale nie warto. Mieszanie mail() i SMTP robi bałagan w raportowaniu i utrudnia debugowanie. Jeśli przechodzisz na SMTP, przejdź całkowicie — zainstaluj PHPMailer albo wtyczkę, zastąp wszystkie mail() w kodzie.

Czy płatne plany SMTP są warte pieniędzy?

Darmowe plany wystarczą, jeśli wysyłasz poniżej 100–300 maili dziennie. Jeśli wysyłasz więcej, płatny plan da Ci lepszą reputację IP (dedykowany IP zamiast współdzielonego), szybsze wsparcie i lepsze raportowanie. Dla polskich biznesów e-commerce GetResponse jest dobrym kompromisem — polski support + ceny w PLN.

Czy SMTP poprawi moją dostarczalność magicznie?

Nie. SMTP jest warunkiem koniecznym, ale niewystarczającym. Musisz jeszcze: skonfigurować SPF, DKIM, DMARC; mieć dobrą domenę (bez historii spamu); pisać maile, które nie spamują (mało linków, brak słów-pułapek); respektować feedback z Gmail Postmaster Tools. SMTP daje Ci narzędzia — ale pracę robisz Ty.

Powiązane artykuły
Found this useful? Share it
AB
O autorze
Artem Berezin
B2B Deliverability Specialist

B2B deliverability specialist with 5+ years of hands-on outreach experience. Built campaigns reaching 90,000+ inboxes across 20+ countries — and fixed the deliverability problems that came with that scale.

Sprawdź dostarczalność u ponad 20 dostawców

Gmail, Outlook, WP, Onet, Interia, GMX, ProtonMail i inne. Prawdziwe zrzuty skrzynki odbiorczej, SPF/DKIM/DMARC, werdykty filtrów antyspamowych. Za darmo, bez rejestracji.

Uruchom darmowy test →

Testy bez limitu · Ponad 20 skrzynek · Wyniki na żywo · Bez konta