Opis
bool
mail
( string do, string temat, string treść [, string
dodatkowe_nagłówki [, string dodatkowe_parametry]])
mail(
)
automatycznie
wysyła
wiadomość
określoną
w
treść
do
odbiorcy
określonego
w
do
.
Można
wysłać
wiadomość
do
kilku
odbiorców
na
raz
,
wypisując
ich
adresy
po
przecinku
w
argumencie
do
.
Poprzez
tę
funkcję
można
też
wysłać
listy
zawierające
załączniki
lub
inne
typy
wiadomości
.
Jest
to
możliwe
dzięki
kodowaniu
MIME
-
po
więcej
informacji
,
zajrzyj
http
:
/
/www.zend.com
/
zend
/
spotlight
/
sendmimeemailpart1.php
lub
Klasy
Mime
PEAR
.
Zapoznanie
się
z
poniższymi
RFC
może
być
przydatne
:
RFC
1896
,
RFC
2045
,
RFC
2046
,
RFC
2047
,
RFC
2048
i
RFC
2049
.
mail(
)
zwraca
TRUE
jeśli
e-mail
został
zaakceptowany
przez
przekaźnik
pocztowy
do
wysłania
lub
FALSE
w
przeciwnym
wypadku
.
Ostrzeżenie
|
Implementacja
funkcji
mail(
)
w
systemie
Windows
różni
się
od
implementacji
w
systemie
Unix
.
Po
pierwsze
,
funkcja
nie
używa
lokalnych
programów
do
komponowania
wiadomości
pocztowych
,
tylko
operuje
na
połączeniach
socketowych
,
co
oznacza
,
że
do
działania
potrzebny
jest
Agent
Transferu
Poczty
(
MTA
)
,
który
nasłuchuje
na
odpowiednim
porcie
.
(Agent
może
znajdować
się
zarówno
na
maszynie
lokalnej
,
jak
i
zdalnej
)
.
Po
drugie
,
nagłówki
użytkownika
,
takie
jak
From
:
,
Cc
:
,
Bcc
:
oraz
Date
:
nie
są
w
pierwszej
kolejności
interpretowane
przez
MTA
,
gdyż
wcześniej
są
parsowane
przez
PHP
.
PHP
4.3
obsługiwał
spośród
wyżej
wymienionych
tylko
nagłówek
Cc
:
(
wymagana
była
odpowiednia
wielkość
liter)
;
natomiast
PHP
=
4.3
obsługuje
już
wszystkie
wyżej
wymienione
nagłówki
i
nie
wymaga
odpowiedniej
wielkości
liter
.
|
Przykład
1
.
Wysyłanie
e-maila
mail(
"joecool@example.com"
,
"Temat
listu"
,
"Linia
1\nLinia
2\nLinia
3")
;
|
|
Jeśli
zostanie
podany
czwarty
argument
,
będzie
on
dopisany
na
końcu
nagłówka
wiadomości
.
Ten
argument
wykorzystuje
się
do
wstawienia
dodatkowych
nagłówków
.
Dodatkowe
nagłówki
rozdziela
się
znakiem
powrotu
karetki
i
nowego
wiersza
.
Notatka
:
Aby
rozdzielić
nagłówki
,
trzeba
użyć
sekwencji
\r\n
,
chociaż
niektóre
uniksowe
agenty
pocztowe
obsługują
także
pojedynczy
znak
nowej
linii
(
\n
)
.
Przykład
2
.
Wysyłanie
listu
z
dodatkowymi
nagłówkami
.
mail(
"nobody@example.com"
,
"temat"
,
$wiadomosc
,
"From
:
webmaster@$SERVER_NAME\r\n
"
."Reply-To
:
webmaster@$SERVER_NAME\r\n
"
.
"X-Mailer
:
|
|
Argumentu
dodatkowe_parametry
używa
się
do
przekazania
dodatkowego
paramteru
do
programu
wysyłającego
pocztę
skonfigurowanego
w
dyrektywie
sendmail_path
.
Używa
się
tego
na
przykład
do
ustawienia
adresu
zwrotnego
koperty
(
envelope
sender
adress
)
przy
wysyłaniu
listu
za
pomocą
sendmaila
.
Możesz
być
zmuszony
dodać
użytkownika
jakim
jest
twój
serwer
www
do
listy
zaufanych
użytkowników
w
pliku
konfiguracyjnym
sendmaila
,
aby
sendmail
nie
dodał
nagłówka
"
X-warning
"
do
wiadomości
przy
wysyłaniu
koperty
(envelope
)
tą
metodą
.
Przykład
3
.
Wysyłanie
listu
z
dodatkowymi
nagłówkami
i
przełącznikami
.
mail(
"nobody@example.com"
,
"temat"
,
$wiadomosc
,
"From
:
webmaster@$SERVER_NAME"
,
"-fwebmaster@$SERVER_NAME")
;
|
|
Notatka
:
Piąty
argument
funkcji
mail(
)
został
dodany
w
PHP
4.0.5
.
Począwszy
od
PHP
4.2.3
argument
ten
jest
zablokowany
w
trybie
bezpiecznym
.
W
przypadku
próby
użycia
,
funkcja
mail(
)
wygeneruje
ostrzeżenie
i
zwróci
FALSE
.
Można
tez
użyć
zwykłych
operacji
na
łańcuchach
znaków
do
tworzenia
złożonych
wiadomości
e-mail
.
Przykład
4
.
Wysyłanie
złożonego
e-maila
.
/*
adresaci
*
/
$do
=
"
Marysia
marysia@example.com
"
.
"
,
"
;
/
/
zwróc
uwagę
na
przecinek
$do
.=
"Kasia
kasia@example.com
"
;
/
*
temat
*
/
$temat
=
"Przypomnienie
o
urodzinach
w
Sierpniu"
;
/
*
wiadomość
*
/
$wiadomosc
=
'
html
head
title
Przypomnienie
o
urodzinach
w
Sierpniu
/
title
/
head
body
p
Te
urodziny
będziemy
świętować
w
Sierpniu
!
/
p
table
tr
th
Osoba
/
th
th
Dzień
/
th
th
Miesiąc
/
th
th
Rok
/
th
/
tr
tr
td
Jan
/
td
td
3
.
/
td
td
Sierpnia
/
td
td
1970
/
td
/
tr
tr
td
Szymon
/
td
td
17
.
/
td
td
Sierpnia
/
td
td
1973
/
td
/
tr
/
table
/
body
/
html
'
;
/
*
Aby
wysłać
e-mail
w
formacie
HTML
,
należy
ustawić
nagłówek
Content-type
.
*
/
$naglowki
=
"MIME-Version
:
1.0\r\n"
;
$naglowki
.=
"Content-type
:
text
/
html
;
charset=iso-8859-1\r\n"
;
/
*
dodatkowe
nagłówki
*
/
$naglowki
.=
"From
:
Przypominacz
o
urodzinach
urodziny@example.com
\r\n"
;
$naglowki
.=
"Cc
:
archiwum_mailingu@example.com\r\n"
;
$naglowki
.=
"Bcc
:
kontrola_mailingu@example.com\r\n"
;
/
*
a
teraz
wyślij
*
/
mail($do
,
$temat
,
$wiadomosc
,
$naglowki)
;
|
|
Notatka
:
Upewnij
się
,
że
nie
ma
żadnych
znaków
nowej
linii
w
argumencie
do
lub
temat
,
gdyż
w
przeciwnym
razie
,
e-mail
może
nie
być
wysłany
poprawnie
.
Notatka
:
Argument
do
nie
może
być
adresem
w
postaci
"
Ktośtam
someone@example.com
"
.
Funkcja
mail(
)
nie
przetworzy
prawidłowo
takiego
adresu
w
czasie
transakcji
z
Agentem
Transferu
Poczty
(MTA
)
.
Patrz
także
:
imap_mail(
)
.