Jeśli próbowałeś kiedyś użyć funkcji mail() na serwerze lokalnym, to wiesz, że nie będzie ona działać poprawnie i wysłany mail nigdy nie dotrze do odbiorcy. Spowodowane jest to nieskonfigurowanym serwerem poczty wychodzącej. W tym artykule dowiesz się jak użyć adresu Gmail do konfiguracji XAMPP’a.

Pierwszą rzeczą, której będziemy potrzebować jest konto Google. Warto specjalnie stworzyć nowe. Wewnątrz plików serwera będziemy podawać dane dostępowe, więc korzystanie ze swojego głównego konta nie jest dobrym pomysłem.

Kolejną potrzebną rzeczą będzie sam XAMPP. Jeśli jeszcze z niego nie korzystasz, to możesz pobrać go tutaj.

Konfiguracja

Przejdźmy do konfiguracji plików. Otwórz plik C:\xampp\php\php.ini. Znajdź (ctrl + F) linię ;extension=php_openssl.dll i usuń średnik.

;extension=php_openssl.dll -> extension=php_openssl.dll

W tym samym pliku (php.ini) musimy zmienić jeszcze jedną rzecz. Znajdź linię [mail function]. Zaraz pod nią powinieneś znaleźć podobne ustawienia:

; For Win32 only.
; http://php.net/smtp
SMTP=localhost
; http://php.net/smtp-port
smtp_port=25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

Cały powyższy kod zamieniamy na:

SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = testdevcorner@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Podmień testdevcorner@gmail.com na własny adres gmail.

Ostatnią rzeczą jaką musimy dodać są ustawienia pakietu sendmail. Otwórz C:\xampp\sendmail\sendmail.ini i usuń całą zawartość. Następnie wklej poniższy kod:

[sendmail]

smtp_server = smtp.gmail.com
smtp_port = 587
error_logfile = error.log
debug_logfile = debug.log
auth_username = testdevcorner@gmail.com
auth_password = pass52352351
force_sender = testdevcorner@gmail.com

Podmień testdevcorner@gmail.com na własny adres gmail i pass52352351 na hasło do tego konta. Możemy teraz przetestować wysyłanie maili.

Test wysyłania maili

W celu przetestowania wysyłki wiadomości utworzymy prosty skrypt. Wewnątrz folderu C:\xampp\htdocs utwórz folder email. Wewnątrz utworzonego katalogu stwórz plik index.php. Wklej do niego poniższy kod:

<?php

$to= "devcorner.pl@gmail.com";
$subject = "Sukces";
$messages= "Wiadomość została pomyślnie wysłana z serwera lokalnego.";

if( mail($to, $subject, $messages) ) {
  echo "Wiadomość wysłana!";
} else {
  echo "Niepowodzenie!";
}

?>

Ten skrypt wysyła krótką wiadomość na podany w zmiennej $to adres email. Wpisz tam swój adres email (inny niż ten, który wpisywałeś wcześniej). Następnie przejdź na stronę http://localhost/email. Po chwili wyświetli się napis Wiadomość wysłana, a na podanym w $to adresie znajdziesz wiadomość:

wiadomosc przeslana

Zablokowana próba logowania

Google może czasami zablokować próbę logowania z serwera lokalnego. W tym przypadku na zastępczy adres email otrzymasz podobną wiadomość:

alert

Możesz w tej sytuacji kliknąć „zezwolić na dostęp mniej bezpiecznym aplikacjom” i zmienić ustawienia bezpieczeństwa. Jeśli nie otrzymałeś tej wiadomości i wysyłanie nie działa, to ustawienia możesz zmienić ręcznie. Uwaga – nigdy nie rób tego na swoim prywatnym koncie.

  • Dominik Korsa

    Jak dla mnie ta jaśniejsza skórka lepsza 🙂 (Choć zazwyczaj programuję z ciemną)

    Fajny poradnik (nawet wyłączyłem AdBlocka, co mi się rzadko zdarza) 😛

  • Fera Gasaron

    Już sobie poradziłam w pliku D:xamppapacheconfextrahttpd-xampp.conf trzeba dodać jeszcze następujący kod:
    Alias /email „D:/xampp/htdocs/email”

    AllowOverride AuthConfig
    Require all granted

    I hula 🙂

  • Fera Gasaron

    Zrobiłam wszystko wg opisu (xampp mam na dysku D, więc ścieżki również zmieniłam odpowiednio) i po wpisaniu http://localhost/email dostaje stronę z błędem 404 „Nie znaleziono obiektu!” 🙁 Nie mam pojęcia co jest nie tak 🙁 Ktoś mógłby mi pomóc???

  • mat m

    UWAGA!
    Jeżeli XAMPP-a instalowaliście w innej lokalizacji niż domyślna należy zmienić ścierzkę w [mail function] w sendmail_path na dopowiednią dla swojej lokalizacji swojego XAMPP-a a w nim pliku sendmail.exe

  • Marcin Magiera

    Zdecydowanie ciemna 🙂

  • Nook17

    Ciemna jest ok

  • Mateusz Micał

    Można też do lokalnego developmentu skorzystać z takiego rozwiązania jak np. mailtrap.io 😉