webh.pl

Wysyłka poczty przez SMTP z PHP i aplikacji

Dlaczego funkcja mail() nie działa na hostingu, jak skonfigurować SMTP w WordPressie, PrestaShop i własnym skrypcie PHP oraz jakie są limity wysyłki.

  • czytania
  • Zaktualizowano:
Poczta WordPress
Hosting

Formularze kontaktowe, powiadomienia ze sklepu, przypomnienia o rejestracji: większość aplikacji PHP wysyła pocztę przez wbudowaną funkcję mail(). Na hostingu webh ta funkcja jest wyłączona i zastąpiona wysyłką przez SMTP. Brzmi jak dodatkowa praca, ale w praktyce jest to zmiana na lepsze: maile wysyłane przez SMTP trafiają do skrzynki zamiast do spamu, bo wychodzą przez uwierzytelniony serwer pocztowy z poprawnie ustawionym SPF i DKIM.

Dlaczego mail() jest wyłączone

Wbudowana funkcja PHP mail() wysyła wiadomości bez uwierzytelnienia. Serwery odbiorców traktują takie maile jako podejrzane i często je odrzucają lub wrzucają do spamu. Na hostingu współdzielonym stwarza też ryzyko, że jedno przejęte konto zacznie rozsyłać spam, obniżając reputację całego serwera.

SMTP rozwiązuje oba problemy: każda wiadomość wychodzi przez autoryzowane konto pocztowe, a SPF i DKIM są ustawione poprawnie od samego początku.

Dane serwera SMTP

Niezależnie od aplikacji, ustawienia SMTP są zawsze te same:

Parametr Wartość
Serwer SMTP smtp.webh.email
Port (SSL) 465
Port (STARTTLS) 587
Nazwa użytkownika pełny adres e-mail, np. [email protected]
Hasło hasło skrzynki z panelu
Szyfrowanie SSL lub STARTTLS

Hasło do skrzynki ustawisz lub sprawdzisz w panelu hostingowym, w zakładce Poczta. Więcej o serwerach poczty znajdziesz w konfiguracji poczty.

Wskazówka

Do wysyłki ze strony warto założyć osobną skrzynkę, np. [email protected] albo [email protected]. Dzięki temu wyraźnie widzisz, co strona wysyła, i nie mieszasz tej poczty ze zwykłą skrzynką firmową.

WordPress

W WordPressie najszybciej dodasz obsługę SMTP przez darmową wtyczkę, np. WP Mail SMTP (dostępną w repozytorium WordPress.org):

  1. Zainstaluj i aktywuj wtyczkę WP Mail SMTP.
  2. Przejdź do WP Mail SMTP → Ustawienia.
  3. Jako mailer wybierz Other SMTP.
  4. Wpisz dane z tabeli powyżej.
  5. Kliknij Wyślij testowego maila, żeby sprawdzić, czy konfiguracja działa.

Wskazówka

Konfiguracja SMTP rozwiązuje też sytuację, gdy formularz kontaktowy informuje o wysyłce, ale wiadomości nigdy nie docierają. Takie formularze domyślnie korzystają z wp_mail(), które na hostingu webh bez SMTP nie wyśle niczego.

PrestaShop

PrestaShop ma wbudowaną obsługę SMTP:

  1. Przejdź do Ustawienia zaawansowane → E-mail.
  2. Jako metodę wysyłki wybierz Użyj swoich własnych parametrów SMTP.
  3. Uzupełnij pola danymi z tabeli powyżej.
  4. Kliknij Wyślij testowy e-mail, żeby potwierdzić działanie.

PHP: PHPMailer

Jeśli piszesz własny skrypt PHP, zamień wywołanie mail() na bibliotekę PHPMailer:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host       = 'smtp.webh.email';
    $mail->SMTPAuth   = true;
    $mail->Username   = '[email protected]';
    $mail->Password   = 'haslo_skrzynki';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
    $mail->Port       = 465;
    $mail->CharSet    = 'UTF-8';

    $mail->setFrom('[email protected]', 'Nazwa nadawcy');
    $mail->addAddress('[email protected]');
    $mail->Subject = 'Temat wiadomości';
    $mail->Body    = 'Treść wiadomości';

    $mail->send();
} catch (Exception $e) {
    // Obsługa błędu: zapisz w logu lub wyświetl komunikat
    error_log("Błąd wysyłki: {$mail->ErrorInfo}");
}

PHPMailer zainstaluj przez Composera (composer require phpmailer/phpmailer) lub pobierz ręcznie z github.com/PHPMailer/PHPMailer.

Limity wysyłki

Z jednej skrzynki możesz wysłać do 1000 wiadomości na dobę. Limit dotyczy każdej skrzynki osobno i jest wspólny dla wysyłki przez SMTP i przez webmaila. Dodatkowe ograniczenia:

  • Maksymalny rozmiar wiadomości z załącznikami: 100 MB
  • Maksymalna liczba odbiorców w jednej wiadomości: 100

Jeśli potrzebujesz wysyłać kampanie e-mail lub masowe powiadomienia dla dużej bazy, rozważ zewnętrzną platformę mailingową (Mailchimp, Brevo i podobne). Limit 1000 na dobę jest zaprojektowany do regularnej korespondencji, nie do masowej wysyłki.

Informacja

Niespodziewane przekroczenie limitu 1000 wiadomości bywa sygnałem ostrzegawczym. Może oznaczać, że konto pocztowe zostało przejęte i ktoś wysyła przez nie spam. Sprawdź folder Wysłane i zmień hasło skrzynki. Więcej o bezpieczeństwie poczty piszemy w poradniku o spamie i phishingu.

Najczęstsze pytania

Contact Form 7 lub WooCommerce nie wysyła maili, co sprawdzić?

Najpierw upewnij się, że wtyczka SMTP jest zainstalowana i skonfigurowana. Contact Form 7 ani WooCommerce nie mają własnej konfiguracji serwera pocztowego, korzystają z wp_mail(), więc po poprawnym ustawieniu wtyczki SMTP zaczną wysyłać automatycznie.

Z jakiego adresu można wysyłać?

Adres nadawcy podawany jako setFrom lub w ustawieniach wtyczki powinien być skrzynką założoną na naszym serwerze. Podanie adresu z obcej domeny (np. gmail.com) przy wysyłce przez smtp.webh.email może spowodować błąd uwierzytelnienia lub odrzucenie przez serwer odbiorcy ze względu na niezgodność SPF.

Czy mogę wysyłać na dowolny adres?

Tak. Adres odbiorcy może być dowolny. Ograniczenie dotyczy tylko adresu nadawcy i serwera SMTP, przez który wysyłasz.

Mam swój serwer pocztowy poza webh, jak to skonfigurować?

Podaj dane SMTP swojego zewnętrznego serwera pocztowego zamiast smtp.webh.email. Dane te dostarcza operator, który prowadzi Twoją pocztę.