James Thornton logo
James Thornton
Google
Web jamesthornton.com
Internet Business Consultant Call Toll Free: 1 (800) 409-2501
About James Google Profile Electric Speed The Electors Juced Contact Me
JamesThornton.com -> PHP -> Polish -> One Page

mail

(PHP 3, PHP 4 )

mail -- Wysy³a e-maila

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: PHP/" . phpversion());

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




Add a comment | Add a link