|
|
Beschreibung
bool mail
( string $to
, string $subject
, string $message
[, string $additional_headers
[, string $additional_parameters
]] )
Parameter-Liste
-
to
-
Empfänger (einer oder mehrere) der E-Mail.
Die Formatierung dieses Strings muss nach » RFC
2822 erfolgen. Beispiele:
- benutzer@example.com
- benutzer@example.com, benutzer2@example.com
- Name <benutzer@example.com>
- Name <benutzer@example.com>, Name2 <benutzer2@example.com>
-
subject
-
Betreff der E-Mail.
Achtung
Die Formatierung dieses Strings muss nach » RFC
2047 erfolgen.
-
message
-
Die zu sendende Nachricht.
Jede Zeile muss durch ein LF-Zeichen (\n) getrennt werden. Außerdem
sollten die Zeilen nicht mehr als 70 Zeichen enthalten.
Achtung
(Nur unter Windows:) Falls PHP direkt mit einem SMTP-Server
kommuniziert und wenn ein Punkt (.) an einem Zeilenanfang steht,
wird dieser Punkt entfernt. Um das zu verhindern, können Sie
diese Punkte durch zwei Punkte ersetzen.
<?php $text = str_replace("\n.", "\n..", $text); ?>
-
additional_headers (optional)
-
String, der am Ende des E-Mail-Headers eingefügt werden soll.
Dies kann benutzt werden, um zusätzliche Header-Angaben wie From,
Cc oder Bcc anzugeben. Falls mehrere solcher zusätzlichen
Header-Angaben angegeben werden soll, müssen diese durch ein
CRLF-Zeichen (\r\n) getrennt werden.
Hinweis:
Um eine E-Mail zu senden, muss die E-Mail
einen From-Header enthalten. Dies kann entweder
durch Setzen eines additional_headers-Parameters
oder durch Setzen eines Standardwertes in der php.ini geschehen.
Falls dies nicht geschieht, wird eine Fehlermeldung ähnlich wie
Warning: mail(): "sendmail_from" not set in php.ini or
custom "From:" header missing ausgegeben.
Der From: Header setzt unter Windows auch den
Return-Path: Header.
Hinweis:
Wenn E-Mails nicht ankommen, versuchen Sie bitte, nur das LF-Zeichen
(\n) zu verwenden. Einige UNIX-MTAs (mail transfer agents) ersetzen
leider LF durch CRLF (\r\n) automatisch (wodurch das CR-Zeichen
verdoppelt wird, wenn CRLF verwendet wird). Dies sollte aber nur in
Ausnahmefällen geschehen, da es gegen » RFC
2822 verstößt.
-
additional_parameters (optional)
-
Der additional_parameters-Parameter
kann benutzt werden, um zusätzliche Parameter an das Programm zu
senden, das für den E-Mail-Versand konfiguriert ist (wenn die
sendmail_path-Einstellung verwendet wird).
Zum Beispiel kann hiermit die "envelope sender address"
(Absenderadresse) gesetzt werden, wenn sendmail mit der
-f-Option benutzt wird.
Der Benutzer, unter dem der Webserver läuft, sollte als bekannter
Benutzer in der sendmail-Konfiguration eingetragen werden, um zu
verhindern, dass ein 'X-Warning'-Header zu den E-Mails hingefügt
wird, wenn mit dieser Methode (-f) der Absender
gesetzt wird. Sendmail-Benutzer finden diese Datei hier:
/etc/mail/trusted-users.
Rückgabewerte
Gibt TRUE zurück, wenn die E-Mail erfolgreich für den Versand akzeptiert
wurde, sonst FALSE.
Dass eine E-Mail für den Versand akzeptiert wurde, bedeutet
nicht, dass sie auch wirklich den gewünschten
Empfänger erreichen wird.
Beispiele
Beispiel #1 Verschicken einer E-Mail.
mail wird benutzt, um eine einfache E-Mail zu
versenden:
<?php // Die Nachricht $nachricht = "Zeile 1\Zeile 2\Zeile 3";
// Falls eine Zeile der Nachricht mehr als 70 Zeichen enthälten könnte, // sollte wordwrap() benutzt werden $nachricht = wordwrap($nachricht, 70);
// Send mail('benutzer@example.com', 'Mein Betreff', $nachricht); ?>
Beispiel #2 Verschicken einer E-Mail mit zusätzlichen Headern.
Hier werden einfache Header gesetzt, um dem MUA (mail user agent, z.B.
ein E-Mail-Programm) die From- und die Reply-To-Adressen mitzuteilen:
<?php $empfaenger = 'niemand@example.com'; $betreff = 'Der Betreff'; $nachricht = 'Hallo'; $header = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
mail($empfaenger, $betreff, $nachricht, $header); ?>
Beispiel #3 Verschicken einer E-Mail mit einem zusätzlichen
Kommandozeilen-Parameter.
Der additional_parameters-Parameter kann benutzt
werden, um zusätzliche Parameter an das über
sendmail_path konfigurierte Programm zu senden.
<?php mail('niemand@example.com', 'Betreff', 'Nachricht', null, '-fwebmaster@example.com'); ?>
Beispiel #4 Verschicken einer HTML-E-Mail.
Auch HTML-E-Mails können mit mail versendet werden.
<?php // mehrere Empfänger $empfaenger = 'max@example.com' . ', '; // beachten Sie das Komma $empfaenger .= 'moritz@example.com';
// Betreff $betreff = 'Geburtstags-Erinnerungen für August';
// Nachricht $nachricht = ' <html> <head> <title>Geburtstags-Erinnerungen für August</title> </head> <body> <p>Hier sind die Geburtstage im August:</p> <table> <tr> <th>Person</th><th>Tag</th><th>Monat</th><th>Jahr</th> </tr> <tr> <td>Julia</td><td>3.</td><td>August</td><td>1970</td> </tr> <tr> <td>Tom</td><td>17.</td><td>August</td><td>1973</td> </tr> </table> </body> </html> ';
// für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// zusätzliche Header $header .= 'To: Simone <simone@example.com>, Andreas <andreas@example.com>' . "\r\n"; $header .= 'From: Geburtstags-Erinnerungen <geburtstag@example.com>' . "\r\n"; $header .= 'Cc: geburtstagsarchiv@example.com' . "\r\n"; $header .= 'Bcc: geburtstagscheck@example.com' . "\r\n";
// verschicke die E-Mail mail($empfaenger, $betreff, $nachricht, $header); ?>
Hinweis:
Wenn Sie HTML- oder komplexe E-Mails versenden möchten, sollten Sie das
PEAR-Paket » PEAR::Mail_Mime
verwenden.
Anmerkungen
Hinweis:
Die Windows-Implementierung von mail unterscheidet
sich auf mehrere Arten von der Unix-Implementation. Zum einen benutzt
sie kein lokales Programm, um die Mails zu erstellen, sondern sie
arbeitet auf Sockets. D.h., dass ein MTA benötigt
wird, der auf einem Netzwerk-Socket lauscht (entweder auf dem eigenen
oder einem entfernten Rechner).
Zum anderen, werden die benutzerdefinierten Header wie
From:,
Cc:,
Bcc: und
Date:
nicht direkt durch den
MTA interpretiert, sondern zunächst
von PHP geparst.
Daher sollte der to-Parameter keine Adresse
der Form "Irgendwas <irgendwer@example.com>" enthalten,
da dies von PHP möglicherweise nicht korrekt an den MTA übergeben
werden kann.
Hinweis:
E-Mails mit Anhängen und speziellen Inhalten (wie HTML) können mit dieser
Funktion versendet werden. Dazu wird MIME-Encoding verwendet. Weitere
Informationen dazu finden Sie in einem
Zend-Artikel und in den
» PEAR-Mime-Klassen.
Hinweis:
Bitte beachten Sie, dass die mail-Funktion nicht
dazu geeignet ist, große Mengen von E-Mails in einer Schleife zu senden,
da die Funktion für jede E-Mail ein SMTP-Socket öffnet und schließt,
was nicht sehr effizient ist.
Um große Mengen von E-Mails zu senden, schauen Sie sich bitte die
PEAR-Pakete » PEAR::Mail und
» PEAR::Mail_Queue an.
Hinweis:
Die folgenden RFCs könnten nützlich für Sie sein:
» RFC 1896,
» RFC 2045,
» RFC 2046,
» RFC 2047,
» RFC 2048,
» RFC 2049 und
» RFC 2822.
|