ArtykułyPHP

PHP mail: Jak wysłać wiadomość e-mail ze strony?

Tworzenie interakcji z użytkownikami Twojej strony internetowej to kluczowy element budowy lojalności i zaangażowania. W tym artykule dowiesz się, jak używać funkcji PHP mail do wysyłania personalizowanych wiadomości e-mail bezpośrednio ze swojej strony. Od prostych formularzy kontaktowych po zaawansowane powiadomienia, PHP mail otwiera przed Tobą bramy komunikacji.

Pomoże nam w tym funkcja mail() mająca postać:

bool mail ( string $do , string $temat , string $tresc [, string $dodatkowe_naglowki [, string $dodatkowe_parametry ]] )

Następujące zmienne odpowiadają za:

$do – w niej przechowywany jest adres adresata poniżej dozwolone łańcuchy znaków:

osoba@example.com
osoba@example.com, imie.nazwisko@example.com
Osoba <osoba@example.com>
Osoba <osoba@example.com>, Inna osoba <ktokolwiek@example.com>

$temat – jest to temat nagłówka wiadomości – nie może zawierać znaków przejścia do nowej linii, ponieważ e-mail może zostać wysłany nieprawidłowo.

$tresc – główna treść wiadomości – każdy wiersz tekstu powinien być zakończony znakiem końca linii LF (\n). Wiersze nie powinny zawierać więcej niż 70 znaków.

(Tylko dla Windows) Kiedy PHP łączy się bezpośrednio do serwera SMTP i zostaną znalezione znaki wskazujące na koniec wiadomości (\n.) to zostaną one usunięte, co spowoduje, że wiadomość będzie mało czytelna. Aby temu zapobiec, należy dodać dodatkową kropkę.

dodatkowe_naglowki (opcjonalnie) – parametr ten jest wykorzystywany do wstawienia dodatkowych nagłówków
(From, Cc, oraz Bcc). Dodatkowe nagłówki rozdziela się przy pomocy znaku powrotu karetki i nowego wiersza – CRLF (\r\n).

From – od kogo pochodzi wiadomość (dozwolone łańcuchy znaków takie same jak dla zmiennej $do).
Cc – ( carbon copy ) – informuje o wysłanej kopii wiadomości do innych odbiorców niż główny (dozwolone łańcuchy znaków takie same jak dla zmiennej $do).
Bcc – (blind carbon copy) – podobnie jak w przypadku C, ale adresy e-mail są ukrywane przed innymi adresatami.

Każdy e-mail musi zawierać nagłówek From. Można go podawać jako parametr dodatkowe_naglowki albo ustawić w pliku php.ini.
Wynikiem pominięcia tego nagłówka będzie informacja o błędzie, podobna do tej: Warning: mail(): „sendmail_from” not set in php.ini or custom „From:” header missing. W Windows nagłówek From ustawia także Return-Path.

Poniżej przykładowy kod PHP:

// kilku odbiorców
$do = 'ania@przyklad.com' . ', '; // zwróćmy uwagę na przecinek
$do .= 'tomek@przyklad.com';

// temat
$temat = 'Przykładowy temat';

// wiadomość
$wiadomosc = 'Przykładowy tekst';

// Aby wysłać e-mail HTML, musi być ustawiony nagłówek Content-type
$naglowki = 'MIME-Version: 1.0' . "\r\n";

// Warto też ustawić kodowanie języka wiadomości, aby nam nie wyszły krzaczki
$naglowki .= 'Content-type: text/html; charset=utf-8' . "\r\n";

// Dodatkowe nagłówki
$naglowki .= 'From: Przykładowy Nadawca <nadawca@example.com>' . "\r\n";
$naglowki .= 'Cc: cc@example.com' . "\r\n";
$naglowki .= 'Bcc: bcc@example.com' . "\r\n";
$naglowki .= 'Reply-To: admin@przyklad.com' . "\r\n";
mail($do, $temat, $wiadomosc, $naglowki);

Część nagłówka Reply-To: to zwrot do adresata. Jeśli wysłana wiadomość nie dotrze do adresata
to wróci na podany adres e-mail w tej części nagłówka.

Kod PHP jest gotowy. Aby wysłać wiadomość potrzeba prostego formularza:

<form action="skrypt.php" method="post">
<input type="text" name="email" /><br />
<textarea name="tresc" cols="30" rows="6"></textarea>
<input type="submit" value="wyślij" />
</form>

Nasz formularz zawiera tylko dwa pola, ale to wystarczy do pokazania jak działa wysyłanie za
pomocą funkcji mail(); Po wprowadzeniu danych do formularza i ich wysłaniu, wykonuje się kod w pliku skrypt.php. Na początku musimy pobrać dane z formularza, najlepiej metodą POST:

$email = isset($_POST['email']) ? $_POST['email'] : null;
$wiadomosc = isset($_POST['tresc']) ? $_POST['tresc'] : null;

Powyższy kod sprawdza, czy treść z formularza została wysłana za pomocą metody POST. Jeśli dane te istnieją to są przypisywane do zmiennych $email i $wiadomosc. W przeciwnym razie do zmiennych zwracane są wartości NULL.

Gotowy kod PHP prezentuje się następująco:

<?php
$do .= 'admin@przyklad.com';
$email = isset($_POST['email']) ? $_POST['email'] : null;
$wiadomosc = isset($_POST['tresc']) ? $_POST['tresc'] : null;
$temat = 'Przykładowy temat';
 
$naglowki  = 'MIME-Version: 1.0' . "\r\n";
$naglowki .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$naglowki .= 'From: Przykładowy Nadawca <nadawca@example.com>' . "\r\n";
$naglowki .= 'Reply-To:' . $email . "\r\n";
 
mail($do, $temat, $wiadomosc, $naglowki);
?>

W artykule poznaliśmy podstawy funkcji mail() w PHP, dzięki czemu teraz możemy z powodzeniem wysyłać e-maile z naszej strony. Oczywiście to nie koniec, ponieważ należy również poznać pozostałe aspekty projektowania formularzy za pomocą funkcji PHP mail(): zasady bezpieczeństwa, kontrola błędów, czy zarządzanie załącznikami. Tematy te zostaną poruszone w naszych kolejnych wpisach.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *