Email mit Anhang und eingebetteten Bildern
Andi
- php
Hallo!
Es tut mir leid, dass ich euch noch einmal belästigen muss, aber ich verstehe nicht, wieso diese Email nicht funktioniert:
$mail_header = "";
$boundary = strtoupper(md5(uniqid(time())));
/* Beginne den Mail-Header mit MIME-Mail-Header */
$mail_header .= "MIME-Version: 1.0\r\n";
$mail_header .= "Content-Type: multipart/related; boundary="$boundary";\r\n\r\n";
/* Hier faengt der normale Mail-Text an */
$mail_header .= "--$boundary\r\n";
$mail_header .= "Content-Type: text/html;\r\n";
$mail_header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$mail_header .= "<hmtl><body>Das ist eine Email mit Anhang <img src=3D"cid:1"></body></html>\r\n\r\n";
/* Hier faengt der Datei-Anhang an */
$mail_header .= "--$boundary\r\n";
$mail_header .= "Content-Type: image/jpeg; name="test.jpg";\r\n";
$mail_header .= "Content-Transfer-Encoding: base64\r\n";
$mail_header .= "Content-ID: <1>\r\n";
$file = "../upload/08D28658793748CDBD1F3FC930FE14BB/2F4901007EA6369B474AAF177C147B6F/5BAE12FDB6AAB5DE6BE0AD6BCB75114E_TN.jpg";
$handle = fopen($file, "r");
$attach_content = fread($handle, filesize($file));
fclose($handle);
$reply = chunk_split(base64_encode($attach_content),76,"\n");
$mail_header .= $reply."\r\n";
$mail_header .= "--$boundary--\r\n";
$mail_header .= "--$boundary\r\n";
$mail_header .= "Content-Type: application/x-httpd-php; name="test.phtml";\r\n";
$mail_header .= "Content-Transfer-Encoding: base64\r\n";
$mail_header .= "Content-Disposition: attachment\r\n\r\n";
$file = "../admin/DictionaryDE.phtml";
$handle = fopen($file, "r");
$attach_content = fread($handle, filesize($file));
fclose($handle);
$reply = chunk_split(base64_encode($attach_content),76,"\n");
$mail_header .= $reply."\r\n";
$mail_header .= "--$boundary--\r\n";
mail("Kael@steuefr.org","Ja eine Email","",$mail_header);
Ich werde schon zu blöd sein.
Grüße
Andi
Hello,
ich würde mal raten, weil Du nur eine Boundary definiert hast, aber nun kein angereihtes Format mehr hast, sondern ein geschachteltes und da muss man für jede Schatelung eine eigene Boundary definieren.
Außerdem hast Du wieder nicht konsequrnt die Leerzeilen vor dem Subcontent berücksichtigt.
Hoffe, dass ich Dir beim schnellen Überfliegen nun nicht Unrecht tue, aber das kreige ich dann ja gleich zurück *gg*
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
nochmal ein Tip am Rande:
Um das Ganze übersichtlicher zu gestalten, trenne den Aufbau von $mail_header von der Berechnung der Daten. Die kannst Du vorweg beschaffen und formatieren und sie dann nur noch einfügen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
$mail_header .= "Content-Type: multipart/related; boundary="$boundary";\r\n\r\n";
related hat einen Kopf-Teil, der den Relationsgeber enthält und einen Datenteil, der die relateten Elemente enthält. Da können keine Attachments drin enthalten sein.
Du müsstest dafür die Typen mulitpart/mixed und multipart/relatetd schachteln.
+--Multipart/mixed---------------
|
| this is a mime mail
|
|
+--------------------------------
|+---multipart/related-----------
||
|| html-Text
||
||
|+-------------------------------
||
|| CID1
|+------------------------------
||
|| CID 2
|+================================
|
+---------------------------------
| Attachment 1
|
+---------------------------------
| Attachment 2
|
+=================================
So müsste das aussehehn. Wenn Du auch noch HTML und Plain-Text alternativ anbeiten willst,
muss da noch ein Subtype multipart/alternative rein. dann wirds aber echt kompliziert
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo!
Habe es jetzt nur mal mit den eingebetteten Bildern versucht aber ich weiß auch nicht weiter:
$mail_header = "";
$boundary = "----".strtoupper(md5(uniqid(time())));
$boundary_part = "----".strtoupper(md5(uniqid(time())));
/* Beginne den Mail-Header mit MIME-Mail-Header */
/* (siehe http://www.php3-forum.de/mime_mail.htm) */
$mail_header = "";
$mail_header .= "From: Walter TelserWalter@Telser.org\n";
$mail_header .= "Reply-To: Walter@Telser.org\n";
$mail_header .= "MIME-Version: 1.0\n";
$mail_header .= "Content-Type: multipart/related; boundary="$boundary"\n";
$mail_header .= "X-Sender: Walte TelserWalter@Telser.org\n";
$mail_header .= "X-Mailer: 4.7.3\n";
$mail_header .= "X-Priority: 3\n";
$mail_header .= "Return-Path: Walter@Telser.org\n";
$mail_header .= "This is a multi-part message in MIME format.\n";
$mail_header .= "$boundary\n";
$mail_header .= "Content-Type: multipart/alternative; boundary="$boundary_part"\n";
/* Hier faengt der normale Mail-Text an */
$message = "";
$message .= "$boundary_part\n";
$message .= "Content-Type: text/html;\n charset="utf8"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";
$message .= "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n";
$message .= "<hmtl><body>Das ist eine Email mit Anhang <img src=3D"cid:1"></body></html>\n";
$message .= "\n";
$message .= "$boundary_part--\n";
$message .= "\n";
$file = "../upload/08D28658793748CDBD1F3FC930FE14BB/2F4901007EA6369B474AAF177C147B6F/5BAE12FDB6AAB5DE6BE0AD6BCB75114E_TN.jpg";
$handle = fopen($file, "r");
$attach_content = fread($handle, filesize($file));
fclose($handle);
$attach_content = chunk_split(base64_encode($attach_content),75,"\n");
/* Hier faengt der Datei-Anhang an */
$message .= "$boundary\n";
$message .= "Content-Type: image/jpeg; \n name="test.jpg"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-ID: <1>\n";
$message .= "\n";
$message .= "$attach_content\n";
$message .= "$boundary\n";
und dann das ganze verschickt
Grüße
Andi
Hello,
$mail_header = "";
$b1 = "--b1--".strtoupper(md5(uniqid(time())));
/* Beginne den Mail-Header mit MIME-Mail-Header */
/* (siehe http://www.php3-forum.de/mime_mail.htm) */
$mail_header = "";
$mail_header .= "From: Walter TelserWalter@Telser.org\r\n";
$mail_header .= "Reply-To: Walter@Telser.org\r\n";
$mail_header .= "MIME-Version: 1.0\r\n";
$mail_header .= "Content-Type: multipart/related; boundary="$b1"\r\n";
$mail_header .= "X-Sender: Walte TelserWalter@Telser.org\r\n";
$mail_header .= "X-Mailer: 4.7.3\r\n";
$mail_header .= "X-Priority: 3\r\n";
$mail_header .= "Return-Path: Walter@Telser.org\r\n\r\n";
$mail_header .= "This is a multi-part message in MIME format.\r\n";
$mail_header .= "\r\n$b1\r\n\r\n";
$message = "";
$message .= "Content-Type: text/html;\n charset="utf8"\r\n";
$message .= "Content-Transfer-Encoding: quoted-printable\r\n";
$message .= "\r\n";
$message .= "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n"; ###???
$message .= "<hmtl><body>Das ist eine Email mit Anhang <img src=3D"cid:1"></body></html>\n"; ####???
$message .= "\r\n";
$message .= "$b1\r\n";
$message .= "\r\n";$file = "../upload/08D28658793748CDBD1F3FC930FE14BB/2F4901007EA6369B474AAF177C147B6F/5BAE12FDB6AAB5DE6BE0AD6BCB75114E_TN.jpg";
$handle = fopen($file, "r");
$attach_content = fread($handle, filesize($file));
fclose($handle);
$attach_content = chunk_split(base64_encode($attach_content),75,"\n");$message .= "Content-Type: image/jpeg; \r\n";
$message .= "\tname="test.jpg"\r\n";
$message .= "Content-Transfer-Encoding: base64\r\n";
$message .= "Content-ID: <1>\r\n";
$message .= "\r\n";
$message .= "$attach_content";
$message .= "\r\n$boundary--\r\n"; ## Endemarke nicht vergessen
Und dann mail($to,$subject,'',$mail_header.$message);
Nun hast Du wieder nur eine multipart/related-Mail
da reicht eine Boundary
Das gekapsel macht man ja nur, wenn man verschiedene Typen kombinieren muss.
Vergleich erstmal Deine und meine Version.
Dann sortier auf jeden Fall nochmal. Mitte in der Definition des Bodys sollte man keine Fileoperationen mehr durchführen.
Das kannst Du dank Arrays alles vorher erledigen. Sonst kommst Du durcheinander.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo, Tom!
Nun klappts!
Danke für deine Mühe, wenn du mal was brauchst maile mir!
Grüße
Andi
Hello,
Nun klappts!
sind aber noch ein paar unreimtheiten drin.
Ich würde HTML-Teile immer in base64 versenden. Das hält mich nämlich davon ab, quoted-printable zu Fuß zu bauen ;-)) Soll heißen, lass es berechnen und bau es nicht selbst. da kommen nur Fehler rein. Die "\n" sind da nämlich nicht unbedingt richtig.
Und die Leerzeile innerhalb eines Boundary-Blockes VOR der Angabe des Content-Type darf (oder muss?) eigentlich auch mal überprüft werden. Es geht auch ohne. Nach den Sub-Headern MUSS wieder ien Leerzeile stehen, bevor die Daten kommen.
Danke für deine Mühe, wenn du mal was brauchst maile mir!
Kommt darauf an, ob Du schon voll fit bist mit OOP unter PHP 5.0.0.
Da muss ich jetzt dringend Sicherheit gewinnen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
unter PHP 5.0.0 hab ich mir noch nicht angeschaut. Kann aber sehr gut java und delphi programmieren.
Glaube, dass da nicht viele Unterschiede sind.
Grüße
Andi
Hello,
unter PHP 5.0.0 hab ich mir noch nicht angeschaut. Kann aber sehr gut java und delphi programmieren.
Glaube, dass da nicht viele Unterschiede sind.
Java finde ich chaotisch. Aber das ist wohl Geschmackssache.
PHP 5.0.0. OOP ist richtig geil geworden. Aber über ein paar Tests bin ich mit meinen Fitnessübungen leider noch nicht raus gekommen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
habe mir PHP 5.0.0 noch nicht angeschaut, weil der Mapserver mit PHP 5 noch nicht läuft.
Grüße
Andi
Hallo!
Ich verstehe nicht, wie man die kombinieren kann?
Kannst du kein Beispiel machen?
Grüße
Andi
Hallo!
Ich verstehe nicht, wie man die kombinieren kann?
Kannst du kein Beispiel machen?
Grüße
Andi
Hello,
Ich verstehe nicht, wie man die kombinieren kann?
habe ich Dir doch schon gemalt.
Und wie es praktisch aussieht, da frag doch einfach mal Outlook Express. Lass Dir eine Mustermail zusammenbauen. Subtypes (speziell alternative) werden angemeldet als
Content-Type: Haupttyp;
type='subtyp';
boundary='$b1';
--boundary
Content-Type: multipart/alternative;
boundary='$b3';
hier der palin-Text-Teil
$b3;
Content-Type: Type2
Inhalt 2
$b3
Content-Type: TypeN
Inhalt N
$b3--
usw.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Ich verstehe nicht, wie man die kombinieren kann?
Schau nochmal in RFC-1521 Media Types
Harzliche Grüße aus http://www.annerschbarrich.de
Tom