[PHP] E-mail w PHP

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);
?>

Please publish modules in offcanvas position.