PHP/Wysyłanie e-maili: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Nie podano opisu zmian
Zyx (dyskusja | edycje)
reformatowanie przykładów, dod. o mailach HTML i rozbudowanie informacji
Linia 1:
{{prognav|PHP|Sesje|Internacjonalizacja}}
 
Aby wysyłać e-maile z PHP, interpreter musi być skonfigurowany do pracy z demonem pocztowym. Odpowiednie dyrektywy znajdują się w pliku ''php.ini'' w sekcji ''[mail function]''. Należy tam podać odpowiednie parametry w zależności od systemu operacyjnego:
Jeśli mamy poprawnie skonfigurowany serwer SMTP i odpowiednią konfigurację PHP, jesteśmy w stanie wysyłać wiadomości e-mail.
* Dla systemów Win32 - host oraz port, pod jakim pracuje demon pocztowy protokołu SMTP. Możesz próbować łączyć się z twoją własną skrzynką e-mail u jednego z providerów, lecz jeżeli znajdujesz się za firewallem, prawdopodobnie będziesz musiał zainstalować serwer poczty na własnym komputerze (np. ''Mercury for Win32'').
* Dla systemów Unix należy podać wywołanie oraz ewentualne parametry programu ''sendmail''.
 
== Funkcja mail() ==
 
Aby wysłać e-maila za pomocą PHP, musimy użyć do tego funkcji ''mail()''. Jej składnia jest następująca:
 
mail(adresat, temat, wiadomość, [nagłówki[, parametry]])
Składnia funkcji mail() :
 
Funkcja zwraca wartość '''TRUE''', jeżeli wiadomość została poprawnie przekazana serwerowi poczty.
mail(adresat, temat, wiadomość, [nagłówki[parametry]])
 
== Przykłady ==
Linia 15 ⟶ 17:
Następujący przykład spowoduje wysłanie wiadomości e-mail na adres ''jan_testowy@serwer.pl'' o temacie "Witaj" i treści "Oto test funkcji mail":
 
<nowiki><?php
if(mail("'jan_testowy@serwer.pl"', "'Witaj"', "'Oto test funkcji mail"'));
{
echo 'Wiadomość została wysłana';
}
?></nowiki>
 
Nagłówki pozwalają na ustawienie dodatkowych informacji o wiadomości, np. jej nadawcy lub kodowaniu znaków:
Możemy również użyć zmiennych:
 
<nowiki><?php
$adresat="jan_testowy@serwer.pl";
$naglowki = "From: moj@mail.pl\r\nReply-To: moj@mail.pll\r\nContent-type: text/plain; charset=windowsiso-8859-12502";
$temat="Witaj";
$tresc="Tutaj znajduje się przykładowa treść";
$naglowki="From: moj@mail.pl\r\nReply-To: moj@mail.pll\r\nContent-type: text/plain; charset=windows-1250";
mail($adresat, $temat, $tresc, $naglowki);
 
if(mail('jan_testowy@serwer.pl', 'Witaj', 'Oto test funkcji mail', $naglowki))
{{Porada|Jak uczy praktyka, nagłówki należy podawać w jednej linii, gdyż inaczej spowoduje to wysłanie niepoprawnej wiadomośći.}}
{
echo 'Wiadomość została wysłana';
}
?></nowiki>
 
Nagłówki podaliśmy wewnątrz cudzysłowów, ponieważ potrzebne nam są kody formatujące \r oraz \n (zejścia do nowej linii). Wewnątrz edytora najlepiej podawać wszystkie nagłówki w jednym ciągu i zejścia zaznaczać przy użyciu właśnie tych kodów. Inaczej może to spowodować wysłanie niepoprawnej wiadomości, gdyż niektóre edytory mają tendencję do zniekształcania tych zejść.
 
Z poziomu PHP można także wysyłać e-maile w formacie HTML. W tym celu należy dodać do wiadomości odpowiednie nagłówki:
 
<nowiki><?php
// Naglowki mozna sformatowac tez w ten sposob.
$naglowki = "Reply-to: moj@mail.pl <moj@mail.pl>\r\n";
$naglowki .= "From: moj@mail.pl <moj@mail.pl>\r\n";
$naglowki .= "MIME-Version: 1.0\r\n";
$naglowki .= "Content-type: text/html; charset=iso-8859-2\r\n";
 
//Wiadomosc najczesciej jest generowana przed wywolaniem funkcji
$wiadomosc = '<html>
<head>
<title>Wiadomość e-mail</title>
</head>
<body>
<p><b>Treść wiadomości</b>: To jest treść wiadomości z formatowaniem HTML.</p>
</body>
</html>';
 
 
if(mail('jan_testowy@serwer.pl', 'Witaj', $wiadomosc, $naglowki))
{
echo 'Wiadomość została wysłana';
}
?></nowiki>
 
{{Porada|Niektórzy programiści piszą własne implementacje funkcji ''mail()'', samodzielnie łącząc się z serwerem i obsługując protokół SMTP. Pozwala to na uniezależnienie się od ustawień połączenia w pliku ''php.ini'', lecz jest skomplikowane i nie będziemy się tym zagadnieniem tu zajmować.}}
 
== Dokumentacja ==