🍪 Można ciasteczko?

Ta strona chce wykorzystywać pliki cookie do analizowania ruchu oraz mierzenia skuteczności i personalizacji reklam zgodnie z polityką prywatności. Zgadzasz się?

PORADNIKI

7 min. czytania

PHPMailer – co to jest? Jak wdrożyć?

E-mail code

Fot. Storyset / MM

Co to jest PHPMailer i jak działa w praktyce? Jak go wdrożyć do wysyłania poczty e-mail przez PHP z wykorzystaniem SMTP? Poradnik.

Spis treści
E-mail

Komu może przydać się PHPMailer? Na wstępie warto podkreślić, że wysyłanie wiadomości e-mail w PHP ma kilka przydatnych zastosowań. To dobre rozwiązanie, wykorzystywane m.in. przez sklepy internetowe. Sprawdzi się tam, gdzie konieczne jest wysyłanie dużej liczby zautomatyzowanych wiadomości. Może być to np. generowanie maili z formularza kontaktowego czy rutynowych powiadomień. Korzystanie ze standardowej funkcji PHP mail() jednak wiąże się z pewnymi ograniczeniami.

Brak uwierzytelniania często jest dość poważnym problemem. Sprawia np., że funkcja ta nie jest akceptowana przez niektóre hostingi. PHPMailer pozwala na uniknięcie większości kłopotów związanych z tą formą komunikacji z użytkownikami. Dodatkowo dysponuje szeregiem przydatnych funkcjonalności. Wiele z nich może usprawnić Twoją pracę i zdecydowanie przyśpieszyć część procesów.

Co to jest PHPMailer?

PHPMailer jest biblioteką pozwalającą na wysyłanie wiadomości e-mail z poziomu PHP. Funkcjonuje na licencji GNU LGPL, czyli jest opensourcowa. Oznacza to, że możesz korzystać z niej zupełnie za darmo. Z jej pomocą wyślesz maile, ale także zautomatyzujesz proces kontaktowania się ze swoimi odbiorcami. Możesz wykorzystać ją do różnorodnych zadań. Sprawdza się, gdy zachodzi konieczność ciągłego wysyłania większej liczby wiadomości lub powiadomień.

PHPMailer różni się od standardowej funkcji mail() w PHP. Przede wszystkim mowa w jego przypadku o obecności SMTP. Jest to protokół komunikacyjny. Wykorzystuje się go do wysyłania wiadomości e-mail z własnej domeny między serwerami pocztowymi. Aby natomiast mail został przekazany, niezbędne jest przejście autoryzacji konta e-mail.

Funkcja mail() w PHP nie wymagała żadnego uwierzytelniania. Możliwe było wpisanie dowolnego adresu e-mail, by wystosować wiadomość. W tym przypadku natomiast niezbędne jest zalogowanie się do istniejącego konta e-mail. Nadal odbywa się to z poziomu aplikacji PHP. Nie wymaga natomiast od Ciebie większej znajomości kodowania. Wystarczy jedynie, że posłużysz się gotową biblioteką, zmieniając jedynie podstawowe dane.

PHPMailer – zastosowanie

Jak wspominaliśmy, PHPMailer jest biblioteką wykorzystywaną do wysyłania maili z aplikacji PHP. W jakich przypadkach takie rozwiązanie znajduje swoje zastosowanie? Kiedy warto użyć go zamiast korzystania ze standardowych rozwiązań, takich jak np. Webmail? Pozwala na wysyłanie wiadomości do wielu odbiorców w jednym momencie. Dzięki temu więc doskonale sprawdzi się przy:

  • tworzeniu i rozsyłaniu niewielkich newsletterów,
  • wysyłaniu wiadomości podtrzymujących relacje z klientami, odbiorcami czy użytkownikami,
  • systemie aktywacji kont, automatycznie wysyłającym maile,
  • automatycznym wysyłaniu powiadomień, np. dotyczących zmian w projektach,
  • automatycznie generowanych wiadomościach, będących odpowiedziami na określone zachowania użytkowników.

To oczywiście tylko niektóre z zastosowań, do których wykorzystany może zostać PHPMailer. W praktyce bowiem jest on w stanie usprawnić i zautomatyzować wiele procesów e-biznesowych. Co więcej, z jego pomocą możesz dostosować formę wysyłanych wiadomości do własnych potrzeb. Odpowiada za to szereg funkcji i możliwości oferowanych przez tę bibliotekę.

Funkcje i możliwości PHPMailer

Główną zaletą PHPMailera jest jego elastyczność. Pozwala wprowadzać modyfikacje zgodne z wymaganiami i oczekiwaniami administratora. W ten sposób możesz m.in.:

  • używać wszystkich pól adresowych (nie tylko „To”, ale też „Cc”, „Bcc” czy „Reply-To”),
  • korzystać z polskich znaków,
  • korzystać z obsługi błędów w kilkudziesięciu językach,
  • korzystać z nagłówków wiadomości,
  • formatować wiadomości w HTML-u,
  • dodawać dowolną ilość załączników różnego typu.

Co szczególnie istotne, PHPMailer może być wykorzystywany do wysyłania maili z serwerów różnego rodzaju. Bez problemu działa w systemach opartych o np.:

Wiele osób docenia PHPMailera za jego niezawodność. Wynika ona z faktu, że możliwe jest w nim zdefiniowanie i automatyczne wprowadzenie zapasowych serwerów SMTP. To tzw. reduntant servers. Są one używane w chwili, gdy główna maszyna z jakiegoś powodu przestanie działać. Dzięki nim serwis internetowy może reagować poprawnie i kontaktować się z użytkownikami nawet w przypadku wystąpienia niespodziewanych sytuacji.

Dodatkową zaletą jest fakt, że PHPMailer pozwala na uwierzytelnienie wysyłki wiadomości. Wykorzystuje do tego np. protokół „POP before SMTP”. Jest to rozwiązanie zgodne ze standardami bezpieczeństwa, oczekiwanymi przez wielu serwerów. Dla klientów pocztowych, nieobsługujących HTML-a, biblioteka ta tworzy też alternatywne e-maile.

Korzystanie z PHPMailer krok po kroku

Do obsługi PHPMailera przydaje się pewna wiedza i doświadczenie w kodowaniu. Wykorzystywanie tego rozwiązania wymaga bowiem skorzystania z kodu PHP. O nic jednak nie musisz się martwić. W praktyce bowiem biblioteka ta opiera się przede wszystkim na gotowym elemencie. Jak wspominaliśmy, musisz zatem jedynie odpowiednio dostosować go do swoich wymagań. Dzięki temu cały proces zamyka się jedynie w czterech, głównych krokach:

  • pobrania biblioteki i umieszczenia jej na serwerze,
  • odpowiedniej konfiguracji ustawień,
  • dodaniu zawartości wiadomości e-mail (treści oraz załączników),
  • wysłania wiadomości.

Pobieranie biblioteki PHPMailer

Jeśli chcesz zacząć korzystać z PHPMailera, pobierz kompletną bibliotekę. Gotową paczkę znajdziesz np. na stronie github.com. Ściągnij ją na swój komputer, a następnie rozpakuj. Kolejny krok to wysyłka na serwer. Możesz zrobić to za pomocą zewnętrznego programu (np. FileZilla czy WinSCP), przez SSH, SFTP, FTPS lub zwykłe FTP (w tym FTP w Windows), albo narzędzia udostępnianego przez hostingodawcę.

Cały skrypt wysyłający wiadomość z poziomu kodu PHP wygląda tak:

require("PHPMailer/src/PHPMailer.php");
require("PHPMailer/src/SMTP.php");
require("PHPMailer/src/Exception.php");
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->IsSMTP();
$mail->CharSet="UTF-8";
$mail->Host = "przykladowa-nazwa";
$mail->SMTPDebug = 1;
$mail->Port = 465;
$mail->SMTPSecure = 'ssl';
$mail->SMTPAuth = true;
$mail->IsHTML(true);
$mail->Username = "przykladowy-login";
$mail->Password = "przykladowe-haslo";
$mail->setFrom('przykladowy-nadawca@poczta.pl', 'Przykładowa Nazwa');
$mail->AddAddress("przykladowy-odbiorca@poczta.pl");
$mail->Subject = "Przykładowy tytuł wiadomości";
$mail->Body = "Przykładowa treść wiadomości!";
if(!$mail->Send()) {
echo "Problem z wysłanie wiadomości: " . $mail->ErrorInfo;
} else {
echo "Wiadomość wysłana!";
}

Musisz natomiast oczywiście odpowiednio go skonfigurować. Wtedy będzie działał zgodnie z Twoimi oczekiwaniami.

Konfiguracja ustawień skryptu

Przyjrzymy się poszczególnym linijkom kodu, które musisz dostosować do swoich adresatów oraz poczty:

  • $mail->Host = "przykladowa-nazwa"; – adres hosta zależy od hostingu poczty, z którego korzystasz,
  • $mail->Port = 465; port protokołu także zależny jest od hostingu poczty,
  • $mail->SMTPSecure = 'ssl'; – zakładamy aktywne szyfrowanie SSL,
  • $mail->Username = "przykladowy-login"; – login, który wykorzystujesz, aby zalogować się do swojej skrzynki e-mail. Często jest to po prostu adres e-mail,
  • $mail->Password = "przykladowe-haslo"; – Twoje hasło do skrzynki pocztowej,
  • $mail->setFrom('przykladowy-nadawca@poczta.pl', 'Przykładowa Nazwa'); – adres e-mail nadawcy oraz jego nazwa (np. imię i nazwisko),
  • $mail->AddAddress("przykladowy-odbiorca@poczta.pl"); – adresy (lub adres) e-mail odbiorców,
  • $mail->Subject = "Przykładowy tytuł wiadomości"; – tytuł wiadomości,
  • $mail->Body = "Przykładowa treść wiadomości!"; – zawartość maila.

Informacje dotyczące skrzynki pocztowej znajdziesz w aplikacji do obsługi skrzynki. Najczęściej wyświetlają się one w ustawieniach. Czasami niektóre da się także znaleźć na koncie klienta w serwisie hostingowym. Wiele z nich usługodawca zamieszcza w pierwszej wiadomości e-mail, wysłanej po otwarciu konta hostingowego. Dane logowania są dokładnie takie jak te, których używasz, aby zalogować się do swojej skrzynki.

Dodawanie zawartości wiadomości

Jak zapewne już się domyślasz, linijka zawierająca frazę „Przykładowa treść wiadomości!” pozwala na edycję treści maila. To właśnie w tym miejscu możesz napisać wszystko, co powinno znaleźć się w wysyłanym komunikacie. Dzięki kodowaniu UTF-8, które uwzględniliśmy w skrypcie, możesz używać polskich znaków.

Dodawanie załączników

PHPMailer pozwala na dodawanie do wiadomości załączników. Co istotne, możliwe jest to nawet w przypadku wysyłania newsletterów. W przypadku wielu gotowych aplikacji opcja taka jest często dodatkowo płatna. W tym przypadku natomiast skorzystać możesz z niej zupełnie za darmo i nie jest to wcale skomplikowane. Wystarczy jedynie, że do powyższego skryptu dodasz tylko kod:

$file_to_attach = 'przykladowa-lokalizacja/przykladowy-plik.jpg';
$mail->AddAttachment($file_to_attach , 'przykladowy-plik.jpg');

W pierwszej linijce musisz podać dokładne miejsce, w którym znajduje się wysyłany plik. Następnie wywołujesz metodę AddAttachment i wysyłasz maila z załącznikiem. Co jednak, jeśli zamierzasz wysłać więcej niż jeden dokument lub zdjęcie? W takim przypadku korzystasz z powyższej metody tyle razy, ile będzie to potrzebne.

Wysyłanie wiadomości

Skrypt został poprawnie uzupełniony, a wszystkie załączniki dodane? Jeśli treść maila jest kompletna, możesz zatwierdzić wprowadzenie skryptu. Wiadomość zostanie wysłana, a Ty otrzymasz odpowiedni komunikat. Jeśli wszystko pójdzie zgodnie z planem, pojawi się informacja „Wiadomość wysłana!”. Odpowiada za to przedostatnia linijka kodu. Gdy natomiast coś pójdzie nie tak, zobaczysz napis „Problem z wysłanie wiadomości”. Oba te komunikaty możesz zmodyfikować w skrypcie, jeśli będzie taka potrzeba.

Warto pamiętać

Przy wysyłce wiadomości z własnego hostingu, warto pamiętać o prawidłowej konfiguracji rekordów DNS dla bezpieczeństwa poczty e-mail, takich jak SPF, DKIM i DMARC oraz o limitach hostingów w zakresie wiadomości e-mail, wysyłanych na godzinę/dobę. W przeciwnym razie można narazić się na wpisanie adresu IP serwera na listę RBL, co skutkować będzie odrzucaniem wiadomości przez skrzynki odbiorców i trafianiem do folderu SPAM. Rozwiązaniem na wysyłki maili transakcyjnych czy newsletterów w większej skali, są dedykowane rozwiązania tego typu, przedstawione na stronie TOP 5 Programów do newsletterów (Darmowe i Płatne).