🍪 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

PHP mail: wysyłanie e-maili ze strony

E-mail code

Fot. Storyset / MM

Co to jest mail PHP? Jak wysłać e-maila ze strony internetowej za pomocą języka PHP i funkcji mail()? Instrukcja krok po kroku.

Spis treści
E-mail

PHP mail() to funkcja, która może mieć wiele rozmaitych zastosowań. Bywa przydatna, jeśli dobrze orientujesz się w języku programowania PHP. Jest on powszechnie stosowany od lat w przypadku milionów stron internetowych. Mimo to jednak na wysyłanie wiadomości e-mail z poziomu kodu warto zdecydować się w określonych przypadkach. Rozwiązanie to nie jest potrzebne każdemu właścicielowi witryny. Są natomiast sytuacje, gdzie sprawdza się perfekcyjnie i jest jedną z najlepszych opcji. Wymaga natomiast posiadania pewnej wiedzy i umiejętności. Cały proces natomiast nie jest na szczęście szczególnie skomplikowany.

Przyjrzyjmy się uważniej zasadom działania funkcji PHP mail(). Poznajmy jej wady, zalety oraz sposoby na skuteczne korzystanie z niej. To przybliży Ci to rozwiązanie i korzyści z niego wynikające. Na tej podstawie samodzielnie ocenisz, czy jest to opcja lepsza od np. tradycyjnego webmaila, czy innego klienta pocztowego do wysyłki e-maili z własnej domeny.

Funkcja PHP mail() – co to?

W aplikacji PHP możesz skorzystać z funkcji PHP mail(). Dzięki niej zyskasz szansę na wysłanie wiadomości prosto z poziomu kodu witryny. Co więcej, zrobisz to przy użyciu nieskomplikowanego kodu. Bez problemu powinny poradzić sobie z nim nawet osoby nieposiadające zaawansowanej wiedzy z zakresu programowania.

Ten sposób jest powszechnie znany wśród profesjonalnych administratorów witryn internetowych. Osoby niezajmujące się tym zawodowo, zwykle korzystają jednak z innych rozwiązań. Jeśli wykupujesz hosting, zapewne masz dostęp do tradycyjnego programu pocztowego. Możliwe też, że przekierowujesz pocztę do zewnętrznego klienta i tam ją obsługujesz.

Funkcja PHP mail() czasem bywa nawet automatycznie blokowana przez hostingodawcę ze względów bezpieczeństwa. Potencjalnie może bowiem zostać wykorzystana przez internetowych oszustów, np. do wysyłania SPAM-u bez Twojej wiedzy. Jeśli jednak będziesz aktualizować oprogramowanie i dbać o odpowiednie zabezpieczenia, nic złego nie powinno się stać.

Funkcja mail() w PHP – zastosowanie

PHP mail() możesz wykorzystać na wiele różnorodnych sposobów, np. do:

  • utworzenia niewielkiego newslettera,
  • wysyłania powiadomień do użytkowników,
  • stworzenia formularza kontaktowego,
  • automatyzacji korespondencji,
  • i wielu innych, przydatnych zadań.

Ponadto jest on wykorzystywany przez wiele zautomatyzowanych procesów. Szczególnie przydatny bywa np. w sklepach internetowych. Bezpośrednio z kodu wysyłane są maile dotyczące choćby:

  • prośby o wystawienie opinii,
  • potwierdzenie przyjęć zlecenia,
  • informacji o pakowaniu przesyłki,
  • przyjęcia zlecenia,
  • formularzy rejestracji użytkownika,
  • weryfikacji i przypominania hasła.

Aby jednak wszystko to było to możliwe, musisz najpierw upewnić się, że funkcja ta jest aktywna.

Jak aktywować funkcję PHP mail()?

Aktywowanie funkcji PHP mail() może różnić się w zależności od panelu hostingowego, do którego masz dostęp. Usługodawcy czasem zmieniają ich wygląd i struktury, by dopasować je do wizerunku swojej działalności. Najczęściej jednak znalezienie odpowiedniej opcji nie jest trudne i skupia się na kilku prostych krokach.

  1. Zaloguj się do swojego panelu klienta.
  2. Znajdź zakładkę lub podstronę związaną z zarządzaniem stronami WWW obecnymi na serwerze. Jeśli takiej nie widzisz, poszukać opcji dotyczącej zarządzania wersją PHP i jej właściwościami. W przypadku cPanel może wyglądać to tak, jak na screenie poniżej.
  1. Wybierz stronę, której ma dotyczyć włączana funkcja i przejdź do edycji ustawień. Alternatywnie włączenie opcji może dotyczyć od razu całego konta i wszystkich witryn, które na nim posiadasz.

Zależnie od systemu, funkcję PHP mail() możesz aktywować na różne sposoby. Czasem jest ona wymieniona w spisie opcji. Wystarczy wtedy, że zaznaczysz ją jako „ON” lub „Aktywna”. Zdarza się też, że wariant ten wymieniony jest w oknie „disable_functions” lub podobnym. W takim przypadku trzeba go z listy zablokowanych funkcji usunąć. Po wszystkim wystarczy, że zapiszesz zmiany. PHP mail() od tej chwili jest do Twojej dyspozycji.

Ryzyko związane z aktywowanie funkcji mail() w PHP

Pamiętaj, by po zakończeniu opisanego procesu szczególnie dbać o przeprowadzanie regularnych aktualizacji. Sprawdzaj zabezpieczenia i pilnuj, by nikt nie wykorzystał tej opcji przeciwko Tobie. Dlaczego to tak istotne?

Internetowi oszuści często wykorzystują cudze konta hostingowe. Często użytkownicy nie są tego nawet świadomi. Luki w skryptach mogą pozwolić bowiem na umieszczenie w witrynie zapisów rozsyłających masowo SPAM. Niestety często opierają się one właśnie na funkcji PHP mail(). To z kolei może sprowadzić do tego, że Twój adres IP trafi na czarną listę RBL.

Oprócz odpowiedniego bezpieczeństwa kodu, warto więc zadbać o takie kwestie jak ustawienie odpowiednich rekordów SPF, DKIM i DMARC.

Funkcja mail() w PHP – budowa

Język programowania PHP w wielu przypadkach opiera się na czytelnych, jasnych funkcjach. Tak jest w przypadku mail(), który składa się z czterech głównych parametrów. Szkielet jego budowy to:

mail($to, $subject, $message, $header);

Teraz opiszmy poszczególne elementy i wytłumaczmy, do czego służą. Są to kolejno:

  • $to – zmienna odpowiedzialna za przechowywanie adresu e-mail adresata. To na niego serwer wyśle wiadomość;
  • $subject – miejsce na wpisanie tytułu wysyłanej wiadomości e-mail;
  • $message – miejsce na wpisanie całej treści wiadomości e-mail. W zależności od zastosowanego nagłówka umieścisz tu czysty tekst lub zawartość HTML;
  • $header – wyżej wspomniany nagłówek, określający szczegóły wykonywanej operacji.

Trzy pierwsze elementy nie są specjalnie skomplikowane. Wypełniasz je takimi samymi danymi jak w przypadku korzystania ze zwykłego programy pocztowego. Przyjrzyjmy się natomiast nieco bliżej nagłówkowi. Jego struktura składa się z trzech linijek i może wyglądać np. tak:

$header = "From: przykladowy@mail.com \nContent-Type:".' text/html;charset="UTF-8"'."\nContent-Transfer-Encoding: 8bit";

Kolejno:

  • Pierwsza linijka zawiera informację, z jakiego serwera wysłano e-mail.
  • Druga z kolei zawiera deklarację formatu wiadomości. My wprowadziliśmy HTML, by posługiwać się swobodnie znacznikami i łatwo zmieniać style w treści. Możesz natomiast postawić też na text/plain i korzystać z czystego tekstu.
  • Ostatnia linijka pozostaje niezmienna. Deklaruje ona standardową wartość Content-Transfer-Encoding.

Co z polskimi znakami?

Zdarza się, że wiadomość zawierająca polskie znaki, po otwarciu jej w kliencie pocztowym pełna jest tzw. krzaczków. Mowa tu o nieczytelnych i zupełnie niezrozumiałych dla człowieka znakach. Najczęściej jest to wynik błędnego kodowania zestawu znaków. Właśnie dlatego tak ważny jest fragment charset=UTF-8 w powyższym przykładzie. „UTF-8” to jedno z kodowań obsługujących polskie znaki. Zamiast niego możesz zastosować też np. cp-1250 czy iso-8859-2.

Jak wysłać e-mail ze strony?

Całe polecenie, zawierające wszystkie cztery elementy, wyglądać zatem może ostatecznie tak:

<?php
$header = "From: przykladowy@mail.com \nContent-Type:".' text/html;charset="UTF-8"'."\nContent-Transfer-Encoding: 8bit";
$to = "mail-odbiorcy@mail.com";
$subject = "Przykładowa wiadomość";
$message = "Cześć, to przykładowa wiadomość";

mail($to, $subject, $message, $header)
?>

Po jego wprowadzeniu wyślesz z poczty „przykladowy@mail.com” wiadomość o treści: „Cześć, to przykładowa wiadomość”. Jej temat to: „Przykładowa wiadomość”, a adres: „mail-odbiorcy@mail.com”.

Potwierdzenie wysłania wiadomości email w PHP

Chcesz się upewnić, że Twój mail został wysłany poprawnie? Funkcja mail() po poprawnym wywołaniu powinna zwrócić wartość true. Nic nie stoi na przeszkodzie, aby wykorzystać tę właściwość na swoją korzyść. Możesz przy jej użyciu zakodować prosty mechanizm przysyłający potwierdzenie, że wiadomość została wysłana poprawnie. Wystarczy tylko, że na końcu kodu umieścisz fragment:

if(mail($to, $subject, $message, $header)){
echo "Wiadomość e-mail została wysłana poprawnie";
}
else{
echo "Ups, coś poszło nie tak. Wiadomość nie została wysłana prawidłowo."
}

Pamiętaj jednak, że nie jest to 100-procentowe potwierdzenie prawidłowego wysłania wiadomości. Dotarcie e-maila pod oczekiwany adres jest bowiem zależne od serwerów, które je oczekują. Pewność zyskasz więc dopiero, gdy skorzystasz z protokołu SMTP.

Mail() w PHP z autoryzacją SMTP

Standardowa metoda mail() w PHP nie wymaga żadnego uwierzytelniania konta e-mail. Nie jest ono sprawdzane, przez co może być blokowane przez część hostingodawców. Uchronić nas może przed tym skorzystanie z protokołu weryfikacyjnego SMTP. Jak zapewne już się domyślasz, wymaga ono zalogowania się do istniejącej skrzynki e-mail. Nadal natomiast możemy zrobić to z poziomu aplikacji PHP.

W tym przypadku najłatwiej będzie skorzystać z gotowej biblioteki. W takim przypadku wystarczy tylko, że wprowadzisz do niej odpowiednie zmienne. Pobrać ją możesz z internetu, a nazywa się PHPMailer. Następnie umieszczasz ją w folderze głównym na swoim serwerze i uzupełniasz pola:

  • host,
  • port,
  • username,
  • password,
  • setform,
  • addaddress.

Zalety i wady PHP mail()

Zalety PHP mail

  • łatwość użycia,
  • metoda dostępna u większości hostingodawców,
  • pozwala na automatyzację wielu procesów,
  • umożliwia tworzenie newsletterów z załącznikami,
  • pozwala na wysyłkę wiadomości bez większych ograniczeń,
  • brak konieczności zakładania dodatkowej skrzynki e-mail.

Wady PHP mail

  • po włączeniu funkcji i zaniedbaniu środków ochrony może ona zostać wykorzystana przez internetowych oszustów,
  • nadużywanie funkcji może sprawić, że serwer znajdzie się na czarnej liście. Wysyłane wiadomości zaczną wtedy trafiać od spamu,
  • część hostingodawców domyślnie blokuje tę funkcję i trzeba aktywować ją ręcznie.

Podsumowanie

Wysyłanie wiadomości e-mail przy użyciu funkcji mail() w PHP sprawdza się w wielu sytuacjach. Z powodzeniem wykorzystasz to na swojej stronie internetowej. Dzięki temu usprawnisz i zautomatyzujesz wiele czasochłonnych procesów. Łatwiej też będzie Ci nawiązać, a następnie utrzymywać, kontakt ze swoimi odbiorcami. Szybko stworzysz newslettera czy standardowe powiadomienia, wysyłane w odpowiednich momentach. Przy większych wysyłkach, warto się jednak zainteresować dedykowanymi programami do newsletterów.

Korzystanie z PHP mail() nie należy do skomplikowanych. Osoby, które nigdy nie miały nic wspólnego z kodowaniem, mogą początkowo czuć się lekko nieswojo. Z czasem jednak uczucie to z pewnością minie. W połączeniu z protokołem SMTP jest to bowiem doskonały sposób na budowę skutecznej komunikacji marketingowej na niewielką skalę i nie tylko.