Tabellen und Farbe im Mailer

  • Themenstarter Themenstarter Maximus
  • Beginndatum Beginndatum
M

Maximus

Hi,

ich habe folgendes Problem :

Ich habe mir ein PHP-Script geschrieben, welches die Dateneingabe in einem Forular per Email
an mich weiterleitet.
Bisher habe ich die Mail mit dem Print-befehl aufgebaut und mit der Mail-Funktion verschickt.
Da diese Mail aber nun an andere Personen geht würde ich sie gerne mit HTML grafisch aufpeppen.
So sollen die Daten in einer Tabelle angezeigt werden und auch etwas Farbe ins Spiel kommen.
Kann mit da jemand sagen wie ich sowas am einfachsten realisiere und ob ich das mit der
Mail-Funktion überhaupt machen kann.

CU
Maximus
 
machbar ist das schon ... aber net so einfach :(

Bedenken solltest Du dabei auch, daß der Empfänger evtl. keine HTML-Mails lesen kann. Demnach solltest Du die Mail auch im Text-Format angeben. (Das Mail-Programm zeigt dann die HTML-Version an, wenn es das kann - ansonsten die "Nur-Text"-Version)

In den Mail-Headers müssen dafür noch einige extra-Informationen rein:

Code:
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0038_01C10693.5D25C4C0"

das was hinter boundary steht ist übrigens frei wählbar.

Im Mail-Text müssen dann die einzelnen Teile mit diesem boundary eingeleitet werden. gefolgt vom Content-Type (text/plain bzw. text/html) und der entsprechenden Nachricht.

Code:
------=_NextPart_000_0038_01C10693.5D25C4C0
Content-Type: text/plain;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Hallo Dunsti

------=_NextPart_000_0038_01C10693.5D25C4C0
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

<HTML><HEAD>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<FONT face=3DArial size=3D2>Hallo Dunsti</FONT>
<HR>
</BODY></HTML>

------=_NextPart_000_0038_01C10693.5D25C4C0--

Hatte ich schon erwähnt, daß das Ganze recht aufwendig ist? Naja, so sehr aufwendig isses ja net ... aber Du solltest das Ganze auf alle Fälle mal austesten, indem Du diverse Mails an Dich selbst schickst, und dir von diesen den Quelltext studierst. Leider hab ich diese Funktion noch nicht in allen Mailprogrammen gefunden :(

Hoffe das hilft erstmal.

Gruß
Dunsti
 
?????

Hm, hast Du irgendwie mal eine Beispiel-Datei oder so ?
Ich werde aus oben der Sache nicht so ganz schlau.

So sieht mein Header aus :
$header = "From:";
$header.= $EMail;
$header.= "\r\nContent-Type: text/html; charset=iso-8859-1\n";

So der Body:
$body.="<HTML>";
$body.="<TITLE><H2>Antrag auf Aufnahme bei Glads.ger</H2></TITLE>";
$body.="<BODY>";
$body.="Antrag auf Aufnahme bei Glads.ger";
$body.="</BODY>";
$body.="</HTML>";

Und so der Mail-Befehl:
mail("Jens.Greeb@t-online.de","Antrag auf Clanwar",$body, $header);}

Und so das Ergebnis:
Content-Type: text/htmlcharset="Windows-1252"Content-Transfer-Encoding: quoted-printableSoeben wurde folgende Bewerbung für den Membersship beim Glads.ger-Clan abgesandt : Nachname : dsf Vorname : jk Nickname : j ICQ : jkjk EMail : Jens.Greeb@gmx.de Bisheriger Clan : jk Geburtsdatum : hjkh Ich spiele Counterstrike seit : jk Wohnort : Telefonnummer : jk Serverbestätigung : Bin einverstanden ! Angabenbestätigung : Bin einverstanden
 
Hier mal ein ähnliches Beispiel, allerdings wird hier ein Attachment angehängt. Die Vorgehensweise ist aber die gleiche! ;)

PHP:
$content = "Hallo \"$recipient\",

Jemand hat Dir über unsere Webseite eine Nachricht geschickt:
Absender: $sender
E-Mail: $frommail
Betreff: $subject
-----------------------------------------------------
$nachricht
-----------------------------------------------------\n";
$anhang = chunk_split(base64_encode(fread( $fd, filesize($location))));
$header = "MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"========20558991068648\"";
$content = "--========20558991068648
Content-Type: text/plain; charset=\"us-ascii\"
Content-Transfer-Encoding: 7bit


$content
--========20558991068648
Content-Type: $file_type; name=$file_name
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$file_name\"

$anhang";
mail($recipient,$subject,$content,"From: $sender <$frommail>\n".$header);

Die Einzelnen Teile der Mail werden also einfach in den Mail-Text geschrieben, und immer wieder von dem boundary und dem Content-Type usw. eingeleitet. In diesem Fall zuerst der eigentliche Mail-Text (Content-Type=text/plain) und anschließend das Attachment (Content-Type des anzuhängenden Files). Das Attachment wird hier zuerst nach base64 codiert. (das müsstest Du auch machen, wenn in Deinem HTML-Teil Bilder verwendet werden sollen)

Wie schon gesagt, das ist ne Sache, wo Du am besten mal ein wenig rumprobierst. Am besten So: schick Dir selbst eine Email in der Form, wie Du sie gerne haben willst, analysiere den Quelltext, und versuch die Mail per PHP "nachzubauen" :)

noch ein Tip: Der Content-Type muss auch in den Mail-Body!!! Ich hab auch festgestellt, daß die Zeilenumbrüche \n extrem wichtig sind, sonst funzt's net.

hoffe das hat was geholfen.

Gruß
Dunsti
 
Zurück