Zamiast wysyłać e-mail z klienta pocztowego zainstalowanego na naszym komputerze,
możemy to samo zrobić ze strony www. Pomoże nam w tym funkcja mail() mająca postać:
bool mail ( string $do , string $temat , string $treść [, string $dodatkowe_nagłówki [, string $dodatkowe_parametry ]] )
Następujące zmienne odpowiadają za:
$do - w niej przechowywany jest adres adresata poniżej dozwolone łańcuchy znaków
- Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
- Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript., Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
- Osoba <Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.>
- Osoba <Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.>, Inna osoba <Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.>
$temat - jest to temat nagłówka wiadomości - nie może zawierać znaków przejścia do nowej linii,
bo e-mail może zostać wysłany nieprawidłowo.
$treść - 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 łaczy 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ę.
<?php
$text = str_replace("\n.", "\n..", $text);
?>
dodatkowe_nagłówki (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_nagłówki 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 = Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.' . ', '; // zwróćmy uwagę na przecinek
$do .= Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.';
// 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=iso-8859-2' . "\r\n";
// Dodatkowe nagłówki
$naglowki .= 'From: Birthday Reminder <Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.>' . "\r\n";
$naglowki .= 'Cc: Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.' . "\r\n";
$naglowki .= 'Bcc: Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.' . "\r\n";
$naglowki .= 'Reply-To: Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.' . "\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łaniuwykonuje się kod w pliku skrypt.php
Na początku musimy pobrać dane z formularza, najlepiej metodą POST:
$email = $_POST['email'];
$tresc = $_POST['tresc'];
Gotowy kod php prezentuje się następująco:
<?php
$do .= Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.';
$email = $_POST['email'];
$wiadomosc = $_POST['tresc'];
$temat = 'przykładowy temat';
$naglowki = 'MIME-Version: 1.0' . "\r\n";
$naglowki .= 'Content-type: text/html; charset=iso-8859-2' . "\r\n";
$naglowki .= 'From: Birthday Reminder <Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.>' . "\r\n";
$naglowki .= 'Reply-To:' . $email . "\r\n";
mail($do, $temat, $wiadomosc, $naglowki);
?>