Home

E-Mails mit PHP versenden

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

HTML & Text in einer E-Mail versenden Teil (2)

Passen wir nun unsere Funktion an:

<?php

//
// E-Mail versenden
//
function SendMail($to$from$subject$message_text$message_html$reply '') {
  
// Zeilenlänge der Textnachrichten auf 70 Zeichen beschränken
  
$message_text wordwrap($message_text70);

  
// Alle Zeilenumbrüche in den Nachrichten auf \n setzen
  
$message_text str_replace(array("\r\n""\r"), "\n"$message_text);
  
$message_html str_replace(array("\r\n""\r"), "\n"$message_html);

  
// 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";
  }

  
// Zufallsid als Blocknamen erzeugen
  
$boundary md5(uniqid(time()));

  
// Content-type auf Multipart setzen
  
$header .= 'MIME-Version: 1.0' "\r\n"
           
'Content-Type: multipart/alternative; boundary="' $boundary '"' "\r\n";

  
// Nachrichtenteile zusammensetzen
  
$message '--' $boundary "\n"
           
'Content-Type: text/plain; charset=ISO-8859-1' "\n"
           
'Content-Transfer-Encoding: 8bit' "\n\n"
           
$message_text "\n\n"
           
'--' $boundary "\n"
           
'Content-Type: text/HTML; charset=ISO-8859-1' "\n"
           
'Content-Transfer-Encoding: 8bit'"\n\n"
           
$message_html "\n\n"
           
'--' $boundary '--';

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

?>

Ein Aufruf könnte wie folgt aussehen:

<?php

// Text Nachricht
$message_text "Zeile1\nZeile2";

// HTML Nachricht
$message_html '
<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_text,
$message_html);

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

?>

Je nach Auswahl des Benutzers wird nun der HTML Teil oder der Text Teil angezeigt.

Nun haben wir eine E-Mail mit mehreren verschiedenen Datenteilen verschickt. Dies lässt sich nun noch um einen weiteren Datenteil erweitern und zwar Dateien als Anhang.

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