PHP kézikönyv
Előző |  | Következő

# 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 [, string additional_parameters]] )

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.

  Figyelem
  Ez 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.

  Figyelem

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

  > Megjegyzés: 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.

  > Megjegyzés: 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

Példa 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); ?>`

Példa 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); ?>`

Példa 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'); ?>`

Példa 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);
?>`

> Megjegyzés: Ha HTML vagy más összetett levelet szeretnél küldeni, a PEAR::Mail nevű PEAR csomag használata ajánlott.

## Megjegyzések

> Megjegyzés: 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

> Megjegyzés: 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.

> Megjegyzés: 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.

> Megjegyzés: Az alábbi RFC-k hasznosak lehetnek: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049, és RFC 2822.

## Lásd még

imap_mail()
PEAR::Mail
PEAR::Mail_Mime

Előző | Tartalom | Következő
ezmlm_hash | Fel | mailparse Functions