mail

(PHP 3, PHP 4 , PHP 5)

mail -- Levelet küld

Leírás

bool mail ( string to, string subject, string message [, string additional_headers] )

A mail() automatikusan a message paraméterben megadott levelet a to paraméterben megadott címzettnek. A levél témamegjelölését a subject határozza meg. Több címzettet is megadhatsz, ha vesszőt teszel a címzettek listájában az email címek közé a to paraméterében. Levélmellékletek és egyéb különleges tartalmú levelek küldésére is használható ez a függvény. Ezeket a MIME kódolással érhetők el, amelyről részletesebb leírást egy Zend cikkben vagy a PEAR Mime Classes c. található.

A követkeő RFC-k is számos segítséget nyújthatnak: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048 és RFC 2049.

A mail() TRUE-val tér vissza, ha levelet sikeresen átvette továbbításra, máskülönben FALSE-szal.

Figyelem

A mail() Windows-os implementációja sokban különbözik a 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. A PHP 4.3-nál korábbi verziói csak a Cc: fejléc elemet támogatta (és ez érzékeny volt a kis- és nagybetűkre). A PHP 4.3-tól kezdődő verziói az említett fejlécek mindegyikét támogatja, és nem kis- és nagybetűérzékeny.

Példa 1. Email küldése

<?php
mail
("joecool@example.com", "Témamegjelölés", "Első sor\nMásodik sor\nHarmadik sor");
?>

A negyedik paraméter megadott szöveg az email fejléc végére kerül. Ez nagyon gyakran újabb fejlécek elküldésére használható, több ilyen esetén azokat az újsorkarakterrel kell elválasztani.

Megjegyzés: A fejlécek elválasztására a \r\n karaktersorozatot kell használni még akkor is, ha néhány Unix levéltovábbító elem az egyszerű újsorkarakterrel (\n) is beéri. A Cc: fejléc kis- és nagy betűre érzékeny, így Cc: kell írni Win32 rendszereken. A Bcc: fejlécet nem támogatják a Win32 rendszerek.

Példa 2. e-mail küldése kiegészítő fejlécekkel

<?php
mail
("nobody@example.com", "Téma", $uzenet,
     
"From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
     
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
     
"X-Mailer: PHP/" . phpversion());
?>

Az additional_parameters paraméter használható arra, hogy a levélküldőként beállított program számára további paramétereket lehessen átadni, lásd: sendmail_path). 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é.

Példa 3. Kiegészítő fejléces levél küldése és további parancssori paraméterek átadása

<?php
mail
("nobody@example.com", "a tárgy", $uzenet,
     
"From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}");
?>

Megjegyzés: Az ötödik paraméter PHP 4.0.5-től elérhető. A PHP 4.2.3 óta ez a paraméter safe_mode használata esetén ki van kapcsolva, ha pedig megpróbálod használni, a mail() függvény figyelmeztető üzenetet ad, majd FALSE-t térít vissza.

Egyszerű sztring kezelő módszerekkel lehet összetettebb e-mail üzenetek összeállításához:

Példa 4. Komplexebb email küldése

<?php
/* címzettek */
$kinek  = "mari@example.com" . ", " ; // figyelj a vesszőre!
$kinek .= "kolos@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 a Content-type fejléc megadásával */
$fejlec  = "MIME-Version: 1.0\r\n";
$fejlec .= "Content-type: text/html; charset=iso-8859-2\r\n";

/* további fejlécek */
$fejlec .= "To: Mary <mary@example.com>, Kelly <kelly@example.com>\r\n";
$fejlec .= "From: Szuletesnapi Emlekezteto <szulinap@example.com>\r\n";

$fejlec .= "Cc: szulinaptar@example.com\r\n";
$fejlec .= "Bcc: szulinapell@example.com\r\n";

/* és most küldjük el! */
mail($kinek, $targy, $uzenet, $fejlec);
?>

Megjegyzés: Biztosítani kell, hogy a ne legyen egyetlen újsorkarakter sem a to vagy a subject fejlécben, mert különben nem megfelelően lesz kiküldve a levél.

Megjegyzés: A to ne legyen "Valami <valaki@example.com>" alakú cím. Előfordulhat, hogy a mail parancs nem fogja megfelelően felismerni, az MTA-val való kommunikáció során. (Különösen Windows alatt).

Lásd még az imap_mail() függvényt.