(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:
- [email protected]
- [email protected], [email protected]
- Bela <[email protected]>
- Bela <[email protected]>, Geza bacsi <[email protected]>
- 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('[email protected]', '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 = '[email protected]';
$targy = 'the subject';
$uzenet = 'hello';
$fejlecek = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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('[email protected]', 'targy', 'az uzenet', null,
'[email protected]');
?>
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 = '[email protected]' . ', '; // figyelj a vesszőre
$cimzett .= '[email protected]';
// 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 <[email protected]>, Kelly <[email protected]>' . "\r\n";
$fejlecek .= 'From: Birthday Reminder <[email protected]>' . "\r\n";
$fejlecek .= 'Cc: [email protected]' . "\r\n";
$fejlecek .= 'Bcc: [email protected]' . "\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 <[email protected]>" 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.