(PHP 4, PHP 5)
mail — Levelet küld
LeÃrás
Levelet küld.
Paraméterek
- to
-
A levél cÃmzettje vagy cÃmzettjei.
E string alakjának eleget kell tennie az » RFC 2822-nek. Néhány példa:
- bela@example.com
- bela@example.com, geza@example.com
- Bela <belar@example.com>
- Bela <bela@example.com>, Geza bacsi <geza@example.com>
- subject
-
A küldendő levél témamegjelölése.
CautionEz nem tartalmazhat újsor karaktert.
- message
-
Az elküldendő üzenet.
A sorokat LF (\n) karakterekkel kell elválasztani. A sorok nem lehetnek 70 karakternél hosszabbak.
Caution(csak Windows esetén) Amikor a PHP az SMTP szerverrel kommunikál, ha egy pont szerepel a sor elején, azt eltávolÃtja. Ennek kivédésére helyettesÃtsd ezeket a pontokat két ponttal.
<?php
$text = str_replace("\n.", "\n..", $text);
?> - additional_headers (elhagyható)
-
Az email fejlécek végéhez beillesztendő string.
Ezt tipikusan további fejlécek hozzáadására használják (From, Cc, Bcc). Több fejléc elválasztására a CRLF-t (\r\n) kell használni.
Note: Levélküldéskor a levélnek kell tartalmaznia egy From fejlécet. Ez beállÃtható az additional_headers paraméterrel, vagy megadható egy alapértelmezés a php.ini-ben.
Ha ezt nem teszed meg, akkor ehhez hasonló üzenetet fogsz kapni: Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.
Note: Ha az üzenetek nem érkeznek meg, próbálj meg csak LF-et (\n) használni. Egyes gyenge minÅ‘ségű Unix levéltovábbÃtók a LF karaktereket CRLF karakerekpárokkal helyettesÃtik (amely dupla CR elÅ‘fordulásokhoz vezet, ha CRLF használata esetén). Ezt csak vészmegoldásként szabad használni, mivel nem felel meg az » RFC 2822-nek.
- additional_parameters (elhagyható)
-
Az additional_parameters paraméterrel adhatunk át további paramétereket a sendmail_path-al konfigurált levélküldÅ‘ programnak. Ezzel például a levél mellé a feladó 'borÃtékot' is küldhet a sendmail-t használva, a sendmail -f paraméterével.
Szükség lehet a webszervert futtató felhasználót sendmail beállÃtásai közé felvenni, hogy a levelekbe ne kerüljenek X-Warning fejlécek, ha ezzel a módszerrel küldesz 'borÃtékot' a levél mellé. Sendmail esetén ez a fájl: /etc/mail/trusted-users.
Visszatérési értékek
TRUE-val tér vissza, ha levelet sikeresen átvette továbbÃtásra, máskülönben FALSE-szal.
Az, hogy átvette továbbÃtásra a levelet, NEM jelenti azt, hogy a levél ténylegesen kézbesÃtve lesz a kÃvánt célba.
Változások naplója
Változat | LeÃrás |
---|---|
4.3.0 (csak Windows esetében) | Minden fejléc (mint pl. From, Cc, Bcc és Date) támogatott, és nincsenek megkülönböztetve a kis- és nagybetűk. (Mivel a felhasználó által megadott fejléceket először nem az MTA értelmezi, hanem a PHP, a PHP < 4.3 csak a Cc fejlécet támogatta és különbséget tett a kis- és nagybetűk között). |
4.2.3 | Az additional_parameters paraméter safe_mode-ban nem engedélyezett, használata esetén a mail() függvény figyelmeztető üzenetet ad, és FALSE-szal tér vissza. |
4.0.5 | A paraméterlista bővült az additional_parameters -el. |
Példák
Example#1 Levél küldése.
A mail() használata egyszerű levélküldéshez:
<?php
// Az üzenet
$uzenet = "1. sor\n2. sor\n3. sor";
// Ha létezhet 70 karakternél hosszabb sor, használjuk a wordwrap() függvény
$uzenet = wordwrap($uzenet, 70);
// Küldés
mail('caffinated@example.com', 'Tárgy', $uzenet);
?>
Example#2 Levél küldése további fejlécekkel.
AlapvetÅ‘ fejlécek hozzáadása, a MUA informálása a From és a Reply-To cÃmekrÅ‘l:
<?php
$cimzett = 'nobody@example.com';
$targy = 'the subject';
$uzenet = 'hello';
$fejlecek = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($cimzett, $targy, $uzenet, $fejlecek);
?>
Example#3 Üzenet küldése további parancssori paraméterrel.
Az additional_parameters paraméterrel adhatunk át további paramétereket a sendmail_path-al konfigurált levélküldő programnak.
<?php
mail('nobody@example.com', 'targy', 'az uzenet', null,
'-fwebmaster@example.com');
?>
Example#4 HTML email küldése
A mail() függvénnyel lehetséges HTML email-ek küldése is.
<?php
// több cÃmzett
$cimzett = 'aidan@example.com' . ', '; // figyelj a vesszőre
$cimzett .= 'wez@example.com';
// tárgy
$targy = 'Augusztusi Születésnapi Emlékeztető';
// üzenet
$uzenet = '
<html>
<head>
<title>Augusztusi Születésnapi Emlékeztető</title>
</head>
<body>
<p>Itt van az augusztusi születésnapok listája!</p>
<table>
<tr>
<th>Személy</th><th>Év</th><th>Hónap</th><th>Nap</th>
</tr>
<tr>
<td>Jocó</td><td>1970</td><td>augusztus</td><td>3.</td>
</tr>
<tr>
<td>Saci</td><td>1973</td><td>augusztus</td><td>17.</td>
</tr>
</table>
</body>
</html>
';
// HTML levél küldése esetén, a Content-type fejlécet be kell állÃtani
$fejlecek = 'MIME-Version: 1.0' . "\r\n";
$fejlecek .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// további fejlécek
$fejlecek .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$fejlecek .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$fejlecek .= 'Cc: birthdayarchive@example.com' . "\r\n";
$fejlecek .= 'Bcc: birthdaycheck@example.com' . "\r\n";
// küldés
mail($cimzett, $targy, $uzenet, $fejlecek);
?>
Note: Ha HTML vagy más összetett levelet szeretnél küldeni, a » PEAR::Mail nevű PEAR csomag használata ajánlott.
Megjegyzések
Note: A mail() Windows-os implementációja sokban különbözik az Unix-ostól. Előszöris nem használ helyi binárist az üzenetek létrehozásához, közvetlenül socket-eken dolgozik, ami azt jelenti, hogy egy MTA-ra van szükség, amely egy hálózati socket-en figyel (ami természetesen lehet a localhost-on vagy egy távoli gépen).
Másodszor, a From:, Cc:, Bcc: és Date:-hez hasonló fejléceket nem az MTA interpretálja először, hanem a PHP.
Harmadszor, a to paraméter nem lehet "Valami <valami@example.com>" alakban. A mail parancs nem biztos, hogy jól értelmezi ezt, miközben az MTA-val beszél.s
Note: Csatolmányokkal ellátott vagy speciális tertalmú (pl. HTML) email-ek is küldhetÅ‘k ezzel a függvénnyel. Ezt MIME kódolással lehet elérni - lásd: » Zend cikk vagy » PEAR Mime osztályok.
Note: Jó tudni, hogy a mail() függvény nem alkalmas ciklusban nagymennyiségű email-ek küldésére, mivel minden egyes levél esetén megnyit majd bezár egy SMTP socket-et, ami nem hatékony.
Nagymennyiségű email-ek küldésével kapcsolatban tanulmányozd a » PEAR::Mail, és a » PEAR::Mail_Queue csomagot.
Note: Az alábbi RFC-k hasznosak lehetnek: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049, és » RFC 2822.