Centrum pomocy

    Jak wysyłać maile poprzez funkcję php mail() tak aby nie trafiały do spamu?

    Na naszym hostingu rozróżniamy dwa sposoby wysyłki maili.
    • Poprzez SMTP - zarezerwowany dla programów pocztowych takich jak Outlook czy Mozilla Thunderbird
    • Poprzez funkcję PHP mail() - przeznaczony do wysyłania maili przez stronę www (skrypty PHP)

    W tym poradniku opisujemy tą drugą opcję czyli wysyłanie maili przez funkcję mail() w PHP.

    Przed konfiguracją upewnij się, że stworzyłeś adres e-mail, który będzie używany jako nadawca wiadomości. Musi on być dodany w cPanel -> konta pocztowe. W przykładach oznaczyliśmy go jako twoj-adres@podpietadomena.pl.

    Musi to być e-mail w domenie, której używa Twój hosting WWW (np. domena podpięta lub *.xaa.pl). Użycie jako nadawcy adresu @gmail.com, @onet.pl, @interia.pl, @wp.pl itp. spowoduje, że takie maile będą trafiały do spamu lub nie będą w ogóle dochodziły gdyż nie można wysyłając wiadomość podszywać się pod nadawcę z innego serwera.

    W przypadku niedawno podpiętej domeny najlepiej odczekaj 24h zanim zaczniesz wysyłać maile. Należy dać ten czas na rozgłoszenie informacji o Twoim nowym adresie dostawcom internetu i serwerom pocztowym. Inaczej Twoja domena i poczta może nie być przez nich rozpoznawana.

    Użycie gotowych systemów np. forum, sklep internetowy lub wtyczka WordPress


    W takim przypadku w ustawieniach strony lub wtyczki należy zaznaczyć wysyłkę za pomocą funkcji php mail() oraz odpowiednio ustawić nadawcę (na stworzone w cPanelu konto pocztowe np. twoj-adres@podpietadomena.pl) oraz adres zwrotny tzw. Return-Path (również na ten sam e-mail). W innym przypadku filtry antyspamowe serwerów pocztowych odbiorcy będą traktować takie wiadomości jako spam lub zupełnie ich nie odbierać. Jeżeli dana strona nie umożliwia takiej konfiguracji, należy zmienić wtyczkę na inną lub ręcznie poprawić skrypt wysyłki (ogólny zarys poniżej).

    Wysyłanie maili za pomocą napisanego samodzielnie skryptu PHP


    Poniżej załączamy działający poprawnie wzór skryptu z ustawionymi nagłówkami (headers) oraz bardzo ważnym adresem zwrotnym (pogrubiona czcionka).

    $from = 'twoj-adres@podpietadomena.pl';
    $to = 'adres-odbiorcy@domena-odbiorcy.pl';

    $subject = 'Temat wiadomości';
    $message = 'Treść wiadomosci';

    $headers = "From: " . $from . "\r\n";
    $headers .= "Reply-To: ". $from . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-2\r\n";

    mail($to, $subject, $message, $headers, "-f ".$from);

    Testowanie


    Aby przetestować poprawność konfiguracji wysyłki maili zalecamy w pierwszej kolejności wykonać próbę przesłania wiadomości na własny prywatny e-mail poza PROSERWER.pl (ew. stworzenie testowego). Jeżeli mail dojdzie należy sprawdzić źródło wiadomości i ustawienia "From", "Reply-To" oraz "envelope-from".

    Po wstępnych testach i dopracowaniu ustawień na koniec polecamy test za pomocą serwisu https://www.mail-tester.com - należy wpisać w wysyłce e-mail, który pojawi się nam po wejściu na stronę mail-tester.com a następnie po kilkunastu sekundach od wysłania wiadomości kliknąć "sprawdź wynik". Jeżeli wynik będzie powyżej 7-8 punktów nasza konfiguracja jest gotowa.

    W razie potrzeby możesz przejrzeć wyniki testów i dostosować się do zaleceń. Na wyniki z zakresu 8-10 ma wpływ już głównie sama treść wiadomości stąd warto nawet do testów nie używać prostego tematu i treści w stylu "test" ale pełnej - takiej jaką wysłalibyśmy odbiorcom.

    Polecamy również lekturę wielu dostępnych w internecie poradników odnośnie dobrych praktyk przy wysyłce maili (dotyczy to głównie samej treści wiadomości i możliwości wypisania się listy mailingowej) - na początek warto przejrzeć wskazówki od google.