Home

E-Mails mit PHP versenden

Sonntag, 11. März 2007 | Autor: Pr0g

HTML E-Mails versenden

Für das Versenden von reinen HTML E-Mails muss unsere Funktion nur leicht erweitert werden. Und zwar ist die Angabe eines zusätzlichen “Content-Type” im Header erforderlich. Dazu werden folgende Zeilen in die Funktion eingefügt:

// Content-Type auf HTML setzen
$header .= 'MIME-Version: 1.0' "\r\n"
         
'Content-Type: text/html; charset=iso-8859-1' "\r\n";

Die gesamte Funktion sieht nun wie folgt aus:

<?php

//
// E-Mail versenden
//
function SendMail($to$from$subject$message$reply '') {
  
// Alle Zeilenumbrüche in der Nachricht auf \n setzen
  
$message str_replace(array("\r\n""\r"), "\n"$message);

  
// Absender auf gültige E-Mailadresse prüfen
  
$from trim($from);
  if (!
preg_match('/^[\w.+-]{1,64}\@[\w.-]{1,255}\.[a-z]{2,6}$/'$from)) {
    return 
false;
  }

  
// Absender in Header schreiben
  
$header 'From: ' $from "\r\n";

  
// Antwortadresse falls vorhanden in Header schreiben
  
if (!empty($reply)) {
    
$header .= 'Reply-To: ' trim($reply) . "\r\n";
  }

  
// Content-Type auf HTML setzen
  
$header .= 'MIME-Version: 1.0' "\r\n"
           
'Content-Type: text/html; charset=iso-8859-1' "\r\n";

  
// E-Mail versenden
  
return mail($to$subject$message$header);
}

?>

Der Aufruf ist gleich geblieben, nur in $message wird nun HTML Code verwendet:

<?php

// E-Mail mit HTML versenden
$message '
<html>
<head>
  <title>E-Mail Titel</title>
</head>
<body>
Diese E-Mail verwendet <b>HTML</b><br />
Zeile 2
</body>
</html>
'
;

$status SendMail('Max Muster <max@domain.de>',
                   
'Peter Muster <peter@domain>',
                   
'Testbetreff',
                   
$message);

echo 
'E-Mail wurde ' . ($status '' 'nicht ') . 'versendet!';

?>

Einige E-Mail Programme zeigen (je nach Einstellung des Benutzers) jedoch keine HTML E-Mails an. Teilweise werden die HTML Formatierungen dann versucht durch passende Zeichen ähnlich darzustellen (bspw. das Layout von Tabellen durch Leerzeichen zu erhalten, oder Fett formatierte Absätze in * eingebunden). Wer auf Nummer sicher gehen will kann daher eine E-Mail auch als HTML- und Textausführung gleichzeitig senden. Dazu mehr im nächsten Schritt.

Seiten: 1 2 3 4 5 6 7 8 9 10

Tags » , , , , , «

Trackback: Trackback-URL | Feed zum Beitrag: RSS 2.0
Thema: Artikel

Diesen Beitrag kommentieren.

3 Kommentare

  1. Hi,

    Anhand dem folgenden Beispiel wird beschrieben, wie man mit dem phpmailer eine einfache E-Mail versenden kann. http://www.phptoast.de/e-mails-versenden-mit-php/233/

  2. Es ist sicher eine nette Alternative, aber auf das Absenden komplexerer Emails mit Dateianhängen geht das (recht kurze) Beispiel nicht ein. Kann die Klasse das überhaupt, eine Erwähnung der Funktionen wäre sicherlich noch nett :)

  3. Na klar kann man mit der Klasse auch Mails mit Anhang versenden. Das kannst du über folgende Funktion relaisieren: AddAttachment()

    Eine detaillierte Dokumentation findest du hier:
    http://phpmailer.codeworxtech.com/index.php?pg=methods

Kommentar abgeben