ezmlm_hash
Mailparse
Mail Funkcje
PHP Manual

# mail

(PHP 4, PHP 5)

mail — Wysyłanie poczty elektronicznej

### Opis

bool mail ( string `$do` , string `$temat` , string `$treść` [, string `$dodatkowe_nagłówki` [, string `$dodatkowe_parametry` ]] )

Wysyła e-mail.

### Parametry

`do`

  Odbiorca lub odbiorcy e-maila.

  Format tego łańcucha musi być zgodny z » RFC 2822. Oto kilka przykładó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`

  Temat e-maila.

  Uwaga

  Nie może zawierać znaków przejścia do nowej linii, bo e-mail może zostać wysłany nieprawidłowo.

`treść`

  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.

  Uwaga

  (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)

  Łańcuchy znaków dodane na końcu nagłówka e-maila.

  Parametr jest zazwyczaj 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).

  > Informacja: 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.

  > Informacja: Jeśli wiadomości nie są dostarczane, można spróbować używać tylko znaku LF (\n). Niektóre, gorzej napisane MTA na systemy Unix zamieniają automatycznie LF na CRLF (co powoduje podwojenie CR jeśli zostało użyte CRLF). Powinno się to zrobić w ostateczności, jako że nie jest to zgodne z dokumentem » RFC 2822.

`dodatkowe_parametry` (opcjonalne)

  Parametr `dodatkowe_parametry` może być użyty do przekazania dodatkowych opcji do programu wysyłającego e-maile. Zostaną one użyte przy wysyłaniu e-maila w ścieżce sendmaila jako ustawienia konfiguracyjne. Mogą one być użyte na przykład do wprowadzenia adresu e-mail nadawcy, tak jakbyśmy użyli polecenia sendmail z opcją -f.

  Użytkownik z prawami którego jest uruchomiony serwer www powinien być dodany jako zaufany użytkownik w konfiguracji programu sendmail, aby zapobiec dodawania nagłówka 'X-Warning' do wiadomości, kiedy ustawiany jest adres nadawcy (-f). Dla użytkowników programu sendmail jest to plik /etc/mail/trusted-users.

### Zwracane wartości

Zwraca `TRUE` jeśli e-mail został zaakceptowany do wysłania, w przeciwnym przypadku zwraca `FALSE`.

Ważną informacją jest to, że pomimo iż e-mail został zaakceptowany do wysłania, to NIE oznacza, że będzie on już w tej chwili wysyłany do odbiorców.

### Rejestr zmian

Wersja | Opis
--- | ---
4.3.0 (tylko Windows) | Obsługiwane są wszystkie dodatkowe nagłówki (takie jak From, Cc, Bcc i Date) i nie są w nich rozróżniane małe i duże litery. (dodatkowe nagłówki nie były przetwarzane bezpośrednio przez MTA, tylko wcześniej parsowane za pomocą PHP, a PHP < 4.3 obsługiwał tylko nagłówek Cc i rozróżniał małe i duże litery).
4.2.3 | Parametr `dodatkowe_parametry` jest wyłączony w trybie safe_mode, a funkcja mail() wywołuje stosowny komunikat i zwraca `FALSE` w czasie próby jego użycia.
4.0.5 | Dodano parametr `dodatkowe_parametry`.

### Przykłady

Przykład #1 Wysłanie e-maila.

Użycie funkcji mail() do wysłania prostej wiadomości:

`<?php
// Wiadomość
$message = "Line 1\nLine 2\nLine 3";
// W przypadku każdej linii dłuższej niż 70 znaków powinniśmy użyć funkcji wordwrap()
$message = wordwrap($message, 70);
// Wyślij
mail('caffinated@example.com', 'My Subject', $message);
?>`

Przykład #2 ysłanie e-maila z dodatkowymi nagłówkami.

Dodatkowe, podstawowe nagłówki informują MUA o adresach From i Reply-To:

`<?php
$to = 'osoba@example.com';
$subject = 'temat';
$message = 'witam';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>`

Przykład #3 Wysłanie e-maila z dodatkowym parametrem wiersza poleceń.

Parametr `dodatkowe_parametry` może być użyty do przekazania dodatkowych opcji do programu wysyłającego e-maile. Zostaną one użyte przy wysyłaniu e-maila w ścieżce sendmaila.

`<?php
mail('osoba@example.com', 'temat', 'wiadomość', null,
'-fwebmaster@example.com');
?>`

Przykład #4 Wysłanie e-maila w formacie HTML

Za pomocą mail() możliwe jest wysłanie treści HTML.

`<?php
// kilku odbiorców
$to = 'aidan@example.com' . ', '; // zwróćmy uwagę na przecinek
$to .= 'wez@example.com';
// temat
$subject = 'Birthday Reminders for August';
// wiadomość
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
// Aby wysłać e-mail HTML, musi być ustawiony nagłówek Content-type
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Dodatkowe nagłówki
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
// Wysłanie e-maila
mail($to, $subject, $message, $headers);
?>`

> Informacja: Jeśli mamy zamiar wysyłać HTML albo e-maile o złożonej zawartości, zaleca się użyć pakietu PEAR » PEAR::Mail_Mime.

### Notatki

> Informacja: Implementacja funkcji mail() w systemach Windows różni się pod wieloma względami od implementacji na platformach Unix. Po pierwsze, do tworzenia wiadomości funkcja nie używa lokalnych poleceń systemowych, tylko operuje bezpośrednio na gniazdach. To oznacza, że wymagana jest dodatkowa usługa MTA, nasłuchująca na porcie (która może działać na localhost lub maszynie zdalnej).
> Dodatkowe nagłówki, takie jak From:, Cc:, Bcc: i Date: nie są przetwarzane przez MTA, tylko parsowane za pomocą PHP.
> Parametr `do` nie powinien być adresem w postaci "Osoba <ktokolwiek@example.com>". Polecenie mail może nie parsować tego właściwie, podczas komunikowania się z MTA.

> Informacja: Za pomocą tej funkcji można wysyłać e-maile z załącznikami i specjalnie formatowanymi typami treści (np. HTML). Jest to realizowane poprzez kodowanie MIME - więcej informacji na ten temat znajduje się na witrynie » artykuł Zend oraz » PEAR Mime Classes.

> Informacja: Nie warto używać funkcji mail() do wysyłania dużej ilości e-maili stosując pętle. Ta funkcja otwiera i zamyka gniazdo SMTP dla każdego wysyłanego e-maila, a to jest mało wydajne.
> Do wysyłania dużej ilości e-maili można stosować pakiety » PEAR::Mail, i » PEAR::Mail_Queue.

> Informacja: Poniższe dokumenty RFC mogą być pomocne: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049, i » RFC 2822.

### Zobacz też:

- imap_mail() - Send an email message
- » PEAR::Mail
- » PEAR::Mail_Mime

ezmlm_hash
Mailparse
Mail Funkcje
PHP Manual