PHP Handbuch
Zurück |  | Weiter

# mail

(PHP 3, PHP 4 , PHP 5)

mail -- Sende Mail

## Beschreibung

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

mail() veschickt die Nachricht in message an den Empfänger in to. Mehrere Empfänger können angegeben werden, indem ein Komma zwischen die Adressen in to gesetzt wird. E-Mails mit angehängten Dateien und speziellen Inhaltstypen können mit dieser Funktion gesendet werden. Dies wird durch MIME-Kodierung ermöglicht. Für weitere Informationen siehe diesen Zend-Artikel oder die PEAR Mime-Klassen.

Die folgenden RFCS könnten auch hilfreich sein: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048 und RFC 2049.

mail() gibt `TRUE` zurück, wenn die Mail erfolgreich für den Versand akzeptiert wurde, sonst `FALSE`.

Warnung
Die Windows-Implementierung der mail()-Funktion unterscheidet sich stark von der Unix-Implemtierung. Zum einen benutzt sie keine 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. PHP < 4.3 unterstützte nur den Cc:-Header (und berücksichtigte die Groß-/Kleinschreibung). PHP >= 4.3 unterstützt alle genannten Header und berücksichtigt nicht mehr die Groß-/Kleinschreibung.

Beispiel 1. Verschicken von Mail.
`<?php mail("joecool@example.com", "Betreff", "Zeile 1\nZeile 2\nZeile 3"); ?>`

Wenn ein vierter String-Parameter übergeben wird, dann wird dieser an das Ende des Mail-Headers gehängt. Mehrfache Header werden durch einen Zeilenumbruch getrennt.

> Anmerkung: Sie müssen die Header mit \r\n trennen, auch wenn einige Unix-MTAs automatisch \n durch \r\n ersetzen (was zu doppeltem \r führt, wenn \r\n verwendet wird).

Beispiel 2. Verschicke Mail mit zusätzlichen Headern.
`<?php mail("nobody@example.com", "Betreff", $message, "From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" . "X-Mailer: PHP/" . phpversion()); ?>`

Der Parameter additional_parameters kann benutzt werden, um zusätzliche Parameter an das Programm zu übergeben, das für den Mail-Versand über die Option sendmail_path konfiguriert wurde. Zum Beispiel kann dies genutzt werden, um die Envelope-Absenderadresse anzugeben, wenn sendmail benutzt wird (Option -f). Eventuell müssen Sie den Benutzer, unter dem Ihr Webserver läuft, als sendmail-Option übergeben, um zu verhindern, dass Ihrer Mail ein 'X-Warning'-Header angehängt wird, wenn Sie die Envelope-Absenderadresse auf diese Art setzen.

Beispiel 3. Verschicke Mail mit zusätzlichen Headern und einem zusätzlichen Kommandozeilen-Parameter.
`<?php mail("nobody@example.com", "Betreff", $message, "From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}"); ?>`

> Anmerkung: Der fünfte Parameter wurde in PHP 4.0.5 hinzugefügt. Seit PHP 4.2.3 ist dieser Parameter im safe_mode deaktiviert; mail() gibt eine Warnung aus und gibt `FALSE` zurück, wenn Sie den Parameter trotzdem verwenden.

Sie können einfache String-Zusammensetzungen verwenden, um komplexe Mails zu erstellen.

Beispiel 4. Verschicke komplexe Mail.
`<?php /* Empfänger */ $to = "mary@example.com" . ", " ; // beachten Sie das Komma $to .= "kelly@example.com"; /* Betreff */ $subject = "Geburtstags-Erinnerung für August"; /* Nachricht */ $message = ' <html> <head> <title>Geburtstags-Erinnerung 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>Joe</td><td>3.</td><td>August</td><td>1970</td> </tr> <tr> <td>Sally</td><td>17.</td><td>August</td><td>1973</td> </tr> </table> </body> </html> '; /* Um eine HTML-Mail zu senden, können Sie den den "Content-type"-Header. setzen */ $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; /* zusätzliche Header */ $headers .= "To: Mary <mary@example.com>, Kelly <kelly@example.com>\r\n"; $headers .= "From: Geburtstags-Erinnerung <geburtstag@example.com>\r\n"; $headers .= "Cc: geburtstagsarchiv@example.com\r\n"; $headers .= "Bcc: geburtstagscheck@example.com\r\n"; /* Verschicken der Mail */ mail($to, $subject, $message, $headers); ?>`

> Anmerkung: Achten Sie darauf, dass Sie keine Zeilenumbruch-Zeichen in den Parametern to oder subject verwenden, da sonst Ihre Mail eventuell nicht korrekt gesendet werden kann.

> Anmerkung: Der to-Parameter sollte nicht in der Form "irgendwas <irgendwer@example.com>" sein, da dies von PHP möglicherweise nicht korrekt an den MTA übergeben werden kann.

Siehe auch imap_mail().

Zurück | Zum Anfang | Weiter
ezmlm_hash | Nach oben | mailparse Functions