Jak wysyłać maile poprzez stronę WWW?
#smtp #mail #php #programowanieWiększość właścicieli stron wysyła wiadomości z formularzy kontaktowych na swoich stronach poprzez funkcję <?php mail(); ?>. Zapewne jest to spowodowane faktem, iż ogranicza się do jednej komendy, przez to wysłanie maila jest dziecinnie proste. Jednak z jego dostarczeniem nie jest już tak różowo.
Wysyłka wiadomości poprzez taką funkcję nie daje 100% gwarancji, że wiadomości dotrze do nadawcy, nie mamy możliwości śledzenia tak nadanego maila i bardzo ciężko sprawdzić co jest powodem, braku odzewu od strony adresata.
Niezawodnym sposobem wysyłania maili ze strony WWW jest wykorzystanie protokołu SMTP – czyli zrobić to tak jak standardowy klient pocztowy zainstalowany na Twoim komputerze. Wysyłając wiadomości poprzez SMTP – mamy pełną kontrolę nad procesem tworzenia wiadomości, ponadto wysłane maile poprzez SMTP są bardziej wiarygodne dla serwerów odbiorczych; dzięki czemu mamy dużą większą szanse dotarcia do adresata i nieodrzucenia naszej wiadomości przez serwer odbiorczy z powodu np. rozpoznania nas jako spamera (a tak często się dzieje z wiadomościami wysłanymi poprzez funkcję mail()).
Poniżej przedstawiam przykładowy kompletny skrypt, który umożliwia wysyłkę wiadomości poprzez SMTP na serwerach hostit.pl (oczywiście po lekkiej modyfikacji można zastosować go dla każdego innego dostawcy usług hostingowych).
Pobierz skrypt
Wystarczy pobrać plik: smtpmail.zip i rozpakować go na komputerze lokalnym i wysłać na serwer do wybranego folderu.
Konfiguracja skryptu
W celu skonfigurowania skryptu edytujemy plik smtpmail/smtpmail.php
SMTP_MAIL_FROM nadawca wiadomości, możemy podać np. Jan Kowalski
SMTP_MAIL_USER adres skrzynki email na naszym serwerze w hostit.pl, np. ala@mojadomena.com.pl
SMTP_MAIL_PASS hasło do skrzynki email
SMTP_MAIL_UTF8, jeżeli wysyłamy wiadomości w zalecanym formacie UTF8, podajemy true, wartość false, spowoduje wysłanie wiadomości w formacie ISO-8859-2. W przypadku krzaczków, zamiast polskich znaków proponuje poeksperymentować z tą zmienną. Ważne! Wysyłana wiadomość (temat i treść) musi być zapisana dokładnie w tym formacie, w którym wysyłasz wiadomość. Czyli jeśli chcemy wysłać wiadomość jako UTF8 (wartość false) musimy się upewnić, iż podczas redagowania tematu i treści w naszym edytorze jest włączony format zapisu pliku jako UTF8.
SMTP_MAIL_DEBUG – domyślnie wartość false, powoduje, że skrypt nie generuje żadnych informacji dot. wysyłki. Wartość false powinna być ustawiona na skrypcie produkcyjnym, w przeciwnym wypadku każdy odwiedzający zobaczy twoje hasła i loginy do skrzynek email. Wartość true możemy ustawić, jeśli chcemy tylko przetestować nasz skrypt.
Teraz w celu wysłania wiadomości w formacie tekstowym piszemy przykładowy skrypt:
<?php
include_once "/lokalizacjaskryptu/smtpmail.php";
wyslijMailText("adres@odbiorcy.com.pl","Temat Wiadomości","Treść Wiadomości");
?>
Wersja do wysyłki wiadomości w formacie <?php include_once "/lokalizacjaskryptu/smtpmail.php"; wyslijMailHtml("adres@odbiorcy.com.pl","Temat Wiadomości","Treść Wiadomości"); ?>
Ważne /lokalizacjaskryptu/ to ścieżka, w której zapisaliśmy pobrany skrypt z bloga. Jeśli więc posiadasz serwer w hostit.pl o nazwie ola, to twoim folderem domowym jest /home/ola/ i jeśli skrypt wgrasz do folderu np. www/smtpmail/ to wywołujesz go w następujący sposób:
<?php
include_once "/home/ola/www/smtpmail/smtpmail.php";
wyslijMailHtml("adres@odbiorcy.com.pl","Temat Wiadomości","Treść Wiadomości");
?>