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

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:02