Moin TTP,
Ich versuch mal ein wenig step-by-step:
1) Erstmal brauchst du einen Mailserver, an den die Mails versendet werden können. Für Windows den beigelegten Mercury oder den Hamster benutzen. (Konfigurationshilfe im Forum suchen
2) Zum versenden der Mail am besten die PHP-Funktion mail() (
http://de3.php.net/manual/de/ref.mail.php) benutzen.
- Code: Select all
//Beispiel (ungetestet):
$Von = "ich@hier.de";
$An = "du@da.de";
$Betreff = "Testmail";
$Text = "Ein kurzer Beispieltext";
// Kopfdaten erstellen
$Header = "From: $Von";
// Jetzt die mail-funktion
mail($An, $Betreff, $Text, $Header);
3) Um diese Mail an mehrere Empfänger zu senden, wird einfach der Header mit CC oder BCC erweitert:
- Code: Select all
//Beispiel (ungetestet):
$Von = "ich@hier.de";
$An = "du@da.de";
$CC = "ein@anderer.de";
$BCC = "noch@jemand.de";
$Betreff = "Testmail";
$Text = "Ein kurzer Beispieltext";
// Kopfdaten erstellen
$Header = "From: $Von \n";
$Header .= "Cc: $CC \n";
$Header .= "Bcc: $BCC \n";
// Jetzt die mail-funktion
mail($An, $Betreff, $Text, $Header);
4) Bei den von dir gewünschten HTML-Mails wird noch ein weiterer Header mit angegeben, allerdings wird dann bei Empfängern mit Nur-Text-Readern (z.B. ich) der HTML-Quelltext angezeigt - egal, so gehts:
- Code: Select all
//Beispiel (ungetestet):
$Von = "ich@hier.de";
$An = "du@da.de";
$CC = "ein@anderer.de";
$BCC = "noch@jemand.de";
$Betreff = "Testmail";
// HTML-Inhalt
$Text = "<html><head><title>Testmail</title></head><body>Ein kurzer Beispieltext</body></html>";
// Kopfdaten erstellen
$Header = "From: $Von \n";
$Header .= "Cc: $CC \n";
$Header .= "Bcc: $BCC \n";
// Als HTML Kennzeichnen
$Header .= "Content-type: text/html \n";
// Jetzt die mail-funktion
mail($An, $Betreff, $Text, $Header);
5) Um es richtig zu machen, sollte die Mail dem MIME-Standard etsprechen. Hier wird die Nachricht in verschiedene Teile aufgeteilt, die dan vom Empfänger gelesen werden können. Diese Teile kann der eigentliche Text mit einem Anhang sein (multipart/mixed) oder zwei Versionen des selben Textes, einmal mit und einmal ohne HTML (multipart/alternaive).
Eigentlich alles, was der Empfänger auf seinem System wiedergeben kann.
Diese Mails erstellt deine Funktion send_html_and_text_mail().
Der Hauptteil bastelt den richtigen Header für die mail()- Funktion zusammen.
- Code: Select all
//html code entfernen für den Nur-Text-Teil
$mail_content_without_html = strip_tags($mail_content);
$mail_content_without_html = trim($mail_content_without_html);
// der Boundary trennt die einzelnen Teile einer mehrteiligen Nachricht
$boundary = strtoupper(md5(uniqid(time())));
// siehe oben
$mail_header = "From: $von";
// Version und Inhalt festlegen:
$mail_header .= "\nMIME-Version: 1.0";
// Dem Empfänger sagen, das eine mehrteilige Nachricht folgt, und wie diese getrennt ist:
$mail_header .= "\nContent-Type: multipart/alternative; boundary=$boundary";
// Nicht unbeding nötig
$mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
// Beginn des ersten Teiles
$mail_header .= "\n--$boundary";
// Der erste Teil besteht aus reinem Text:
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
// Jetzt kommt der Text:
$mail_header .= "\n\n$mail_content_without_html"
// Beginn des zweiten Teils:
$mail_header .= "\n--$boundary";
// Dieser Teil besteht aus HTML-Code
$mail_header .= "\nContent-Type: text/html";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
// HTML-Inhalt:
$mail_header .= "\n\n$mail_content";
// ende des zweiten Teils und Ende der Nachricht:
$mail_header .= "\n--$boundary--";
Keine Panik wenn dir der tiefere Sinn dieser Bastelei nicht ganz klar wird - selbst Microsoft hat da noch nicht ganz durchgeblickt
Ich hoffe, der kleine Ausflug in das Reich der EMails hat dir wenigstens ein kleines bisschen geholfen. Als dein Anwalt rate ich dir: Besorg dir ein Glas Wein und mindestens zwei Stunden Zeit und google dich etwas durchs die Materie.
mfg straffi