Die angeforderte HTML-Datei ist zu groß.
"); //----------------------------------------------------------------------------- function make_rand_str ($sig) { #$sig = $sig & 127; // auf 7 bit umstellen. // Zufallszahl erzeugen srand ((double)microtime()*1000000); $randval = rand(1000,9999999999); $b = $sig.base64_encode($randval); return $b; } //----------------------------------------------------------------------------- function make_boundary ($sig) { $b = "------".make_rand_str ($sig); return $b; } //----------------------------------------------------------------------------- function array_combine ($a1, $a2) { $out = array(); if((!is_array($a1)) or (!is_array($a2))) return false; foreach ($a1 as $key => $val) { if ($val[1] == -1) { $out[$key][0] = $a2[$key][0]; $out[$key][1] = $a2[$key][1]; } else { $out[$key][0] = $a1[$key][0]; $out[$key][1] = $a1[$key][1]; } } return $out; } //----------------------------------------------------------------------------- function add_cid ($a,$realpath) { $out = array (); if (!is_array($a)) return false; foreach ($a as $key => $val) { $out[$key][0] = $a[$key][0]; $out[$key][1] = $a[$key][1]; $out[$key][2] = make_rand_str ("pic_"); if(strtolower(substr(trim($a[$key][0]),0,7))!="http://") { $filepath = $realpath."/".trim($a[$key][0]); } else { $filepath = trim($a[$key][0]); } $fh = @fopen ($filepath, "r"); if (!$fh) { #$out[$key][0] = "BrokenImg.gif"; $out[$key][3] = BROKEN; $out[$key][4] = "image/gif"; } else { $bild = fread($fh, MAX_PIC_SIZE); if (feof($fh)) { $out[$key][3] = chunk_split (base64_encode($bild),WRAP_WIDTH,WRAP_END); $imgdata = GetImageSize ($filepath); $out[$key][4] = $imgdata["mime"]; } else // Bild ist zu groß { $out[$key][3] = BROKEN; $out[$key][4] = "image/gif"; } @fclose ($fh); } } return $out; } //----------------------------------------------------------------------------- function replace_img_src ($html, $a) { if ((!is_array ($a)) or ($html === false)) return false; $back = ""; $pos = 0; foreach ($a as $element) { $back .= substr($html, $pos, ($element[1]-$pos)); $back .= "cid:".$element[2]; $pos = $element[1]+strlen($element[0]); //neuer Startpunkt } $back .= substr($html, $pos); // den Rest anfügen return $back; } //----------------------------------------------------------------------------- function iso2qp ($text) // Erzeugt quoted printable { $ret = ""; $ende = strlen($text); for ($i = 0; $i < $ende; $i++) { if (ord($text[$i]) < 128) { $ret.= $text[$i]; } else { $ret .= "=".substr("00".strtoupper(dechex(ord($text[$i]))), -2); } } return $ret; } //----------------------------------------------------------------------------- function mime_mail($maildat) { if (!is_array($maildat)) return false; if (!is_array($maildat["to"])) return false; // kein Empfänger angegeben $maildat["htmlpath"]=trim($maildat["htmlpath"]); // Leerzeichen entfernen if (strlen($maildat["htmlpath"])>0) { if (strtolower(substr($maildat["htmlpath"],0,7))=="http://") { $realpath = dirname($maildat["htmlpath"]); } else { $realpath = dirname(realpath($maildat["htmlpath"])); } } if (strlen($maildat["html"])>0) { $html=$maildat["html"]; } elseif (strlen($maildat["htmlpath"])>0) { $fh = fopen ($maildat["htmlpath"],"r"); if ($fh) { $html = fread($fh, MAX_HTML_SIZE); if (!feof($fh)) // html-Datei konnte nicht vollständig gelesen werden. { fclose ($fh); $html = HTML_WARNING; } else fclose($fh); } } #else return false; // html-Teil fehlt if (strlen($html)>0) { preg_match_all ("/]+(src=\"([^\"<>\']+)\"|src=\'([^\"<>\']+)\')[^<>]*>/", $html, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE); // Bilder suchen $out = array_combine($out[2], $out[3]); // Bilderarrays zusammenführen $out = add_cid ($out,$realpath); // Array der Bildelemente mit Bilddaten ergänzen $html = replace_img_src ($html, $out); // Bild-Src gegen C-ID austauschen $html = chunk_split(base64_encode($html),WRAP_WIDTH,WRAP_END); // HTML-Teil der Mail Codieren } else { $out = false; } $b1 = make_boundary("part_01_"); // boundaries berechnen. $b2 = make_boundary("part_02_"); $b3 = make_boundary("part_03_"); $extra = ""; if (strlen($maildat["mess_id"])>0) { $mess_id = $maildat["mess_id"] ; # & 127; $extra .= "Message-Id: <$mess_id>\n"; } if (strlen($maildat["from"])>0) { $from = $maildat["from"] ; # & 127; $extra .= "From: $from\n"; } if (is_array($maildat["cc"])) { $cc = implode(",\n ",$maildat["cc"]); if (strlen($cc)>0) { $extra .= "CC: $cc\n"; } } if (is_array($maildat["bcc"])) { $cc = implode(",\n ",$maildat["bcc"]); if (strlen($bcc)>0) { $extra .= "BCC: $cc\n"; } } if (strlen($maildat["notify"])>0) { $note = $maildat["notify"] ;# & 127; $extra .= "Disposition-Notification-To: $note\n"; } $priority = "3"; if (strlen($maildat["priority"])>0) { $priority = strval(intval($maildat["priority"])); } $extra .= "MIME-Version: 1.0\n". "Content-Type: multipart/mixed;\n". " boundary=\"$b1\"\n". "X-Priority: $priority\n". "Content-Transfer-Encoding: 7bit\n\n". "Dies ist eine MIME (Multipurpose Internet Mail Extensions) Mail\n". "Ihr Mailprogramm kann keine MIME-Mails anzeigen.\n\n"; $extra .= "--$b1\n"; $extra .= "Content-Type: multipart/related;\n"; $extra .= " type=\"multipart/alternative\";\n"; $extra .= " boundary=\"$b2\"\n\n"; $extra .= "--$b2\n"; $extra .= "Content-Type: multipart/alternative;\n"; $extra .= " boundary=\"$b3\n\n\n"; $plaintext = "Der HTML-Text kann nicht angezeigt werden\n". "Es ist kein alternativer Text vorhanden"; if (strlen($maildat["plaintext"])>0) { $plaintext = wordwrap(iso2qp($maildat["plaintext"]),WRAP_WIDTH); } $extra .= "--$b3\n"; $extra .= "Content-Type: text/plain;\n"; $extra .= " charset=\"iso-8859-1\";\n"; $extra .= "Content-Transfer-Encoding: quoted-printable\n\n"; $extra .= "$plaintext\n\n"; if (strlen($html)>0) { $extra .= "--$b3\n"; $extra .= "Content-Type: text/html;\n"; $extra .= " charset=\"iso-8859-1\";\n"; $extra .= "Content-Transfer-Encoding: base64\n\n"; $extra .= "$html\n\n"; } $extra .= "--$b3--\n\n"; // Ende von Abschnitt 3 if (is_array($out)) // related Elemente (Bilder) einfügen { foreach ($out as $element) { $extra .= "--$b2\n"; $extra .= "Content-Type: ".$element[4].";\n"; $extra .= " name=\"".basename($element[0])."\"\n"; $extra .= "Content-Transfer-Encoding: base64\n"; $extra .= "Content-ID: <".$element[2].">\n\n"; $extra .= $element[3]."\n\n"; // Bilddaten } } $extra .= "--$b2--\n\n"; // ende des Abschnitt 2 if (is_array($maildat["attach"])) // Attachments einfügen { foreach ($maildat["attach"] as $attach) { $data = $attach["data"]; if (strlen($data) == 0 ) // noch keine Daten vorhanden { // Path angegeben? // Daten holen klappt? $fh = @fopen ($attach["path"],"r"); if ($fh) { $data = @fread($fh, MAX_ATTACH_SIZE); if (!feof($fh)) // html-Datei konnte nicht vollständig gelesen werden. { fclose ($fh); $data = "Anhang der eMail war zu lang"; } else fclose($fh); } } if (strlen($data) > 0) // Daten vorhanden { $data = chunk_split(base64_encode($data),WRAP_WIDTH,WRAP_END); $extra .= "--$b1\n"; // Boundary setzen if (strlen($attach["mime"]>0)) { $extra .= "Content-type: ".$attach["mime"].";\n"; } else { $extra .= "Content-type: application/octet-stream;\n"; } $extra .= " name=\"".basename($attach["path"])."\"\n"; $extra .= "Content-Transfer-Encoding: base64\n"; if (strtolower($attach["display"]) != "yes") // funktioniert nicht { $extra .= "Content-Disposition: attachment;\n"; $extra .= " filename=".basename($attach["path"])."\"\n\n"; } $extra .= $data."\n\n"; } } } $extra .= "--$b1--\n"; // Ende der Mail $to = implode(",\n ",$maildat["to"]); return mail($to,$maildat["subject"],"",$extra); } ############################################################################### $maildat = array(); $maildat["from"]=""; // Absender $maildat["notify"]=""; // Antwortadresse des Absenders $maildat["to"]=array(); // Empfängerliste $maildat["cc"]=array(); // Kopie Empfängerliste $maildat["bcc"]=array(); // verdeckte Kopie Empfängerliste $maildat["subject"]=""; // Betreffzeile $maildat["plaintext"]=""; // Klartext alternativ zu HTML $maildat["html"]=""; // html-Text inclusive Bildlinks $maildat["htmlpath"]=""; // alternativ Pfad zur html-Seite #$maildat["attach"][1]["path"]=""; // Pfad zum Attachment Liste #$maildat["attach"][1]["data"]=""; // Daten des Attachments anstelle von Path #$maildat["attach"][1]["mime"]=""; // Mime-Type des attachments, wenn Data #$maildat["attach"][1]["display"]="no"; // Attachment auch anzeigen, wenn möglich? #$maildat["attach"][2]["path"]=""; // ... #$maildat["attach"][2]["data"]=""; // Daten des Attachments anstelle von Path #$maildat["attach"][2]["mime"]=""; // Mime-Type des attachments, wenn Data #$maildat["attach"][2]["display"]="no"; // ... $maildat["priority"]="3"; #if (($_POST["btn_senden"]) and (strlen($_SERVER["HTTP_REFERER"])> 0)) { $maildat["to"][] = "tschmieder@bitworks.de"; $maildat["from"] = "tschmieder@bitworks.de"; #$maildat["cc"][] = "katja@localhost"; #$maildat["cc"][] = "carsten@localhost"; $maildat["notify"] = "tschmieder@bitworks.de"; $maildat["subject"] = "EcE = Einzelhändler contra Enteignung"; $maildat["htmlpath"]= "http://www.ece.de"; $maildat["plaintext"]= "Über diese Brücken muß er kommen um öden Mammon zu ernten oder was zu ändern. ". "Aber Überschwang ist keine neue Sache..."; $maildat["attach"][]=array( "path" => "warnung.html", "data" => HTML_WARNING, "mime" => "text/html"); $maildat["attach"][]=array( "path" => "http://testserver.bitworks/~carsten/formmailer/related/SmileyAtNight4.bmp", "data" => "", "mime" => ""); $maildat["mess_id"] = "1234567"; $base64html= "ICA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9u YWwvL0VOIj4KICA8SFRNTD4KICA8SEVBRD4KICA8VElUTEU+PC9USVRMRT4KICA8TUVUQSBOQU1F PSJHZW5lcmF0b3IiIENPTlRFTlQ9IlRleHRQYWQgNC40Ij4KICA8TUVUQSBOQU1FPSJBdXRob3Ii IENPTlRFTlQ9Ij8iPgogIDxNRVRBIE5BTUU9IktleXdvcmRzIiBDT05URU5UPSI/Ij4KICA8TUVU QSBOQU1FPSJEZXNjcmlwdGlvbiIgQ09OVEVOVD0iPyI+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0 IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaHR0cDovL3Rlc3RzZXJ2ZXIuYml0d29ya3MvfnZpZXcv ZjEyMzQ1Njc4OTAuY3NzIj4KCiAgPC9IRUFEPgoKICA8Qk9EWSBCR0NPTE9SPSJhbGljZWJsdWUi IFRFWFQ9IiMwMDAwMDAiPgogIDxmb3JtIGFjdGlvbj0iaHR0cDovL3Rlc3RzZXJ2ZXIuYml0d29y a3MvfnRob21hcy90ZXN0L0Zvcm1tYWlsZXIvcmVsYXRlZC9yZWxhdGVkLnBocCIgbWV0aG9kPSJQ T1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KCiAgPFRBQkxFIEFMSUdOPSJsZWZ0 IiBCT1JERVI9MCBDRUxMU1BBQ0lORz0yIENFTExQQURESU5HPTggV0lEVEg9IjY1MHB4Ij4KICAg IDxUUiBBTElHTj0ibGVmdCIgVkFMSUdOPSJtaWRkbGUiPjwvVFI+CgogICAgPFRSIEFMSUdOPSJs ZWZ0IiBWQUxJR049Im1pZGRsZSI+CiAgICAgIDxURD48aW1nIHNyYz0ic21pbGV5LmJtcCI+IDwv VEQ+CiAgICAgIDxURD4gQmVpc3BpZWx0ZXh0LCBkZXIgaGllciBudXIgc3RlaHQgZGFtaXQgZXMg bmFjaCB3YXMgYXVzc2llaHQgISEhISE8L1REPgogICAgPC9UUj4KCiAgICA8VFIgQUxJR049Imxl ZnQiIFZBTElHTj0ibWlkZGxlIj4KICAgICAgPFREPjwvVEQ+CiAgICAgIDxURD4gQmVpc3BpZWx0 ZXh0LCBkZXIgaGllciBudXIgc3RlaHQgZGFtaXQgZXMgbmFjaCB3YXMgYXVzc2llaHQgISEhISE8 L1REPgogICAgPC9UUj4KCiAgICA8VFIgQUxJR049ImxlZnQiIFZBTElHTj0ibWlkZGxlIj4KICAg ICAgPFREPiBCZWlzcGllbHRleHQsIGRlciBoaWVyIG51ciBzdGVodCBkYW1pdCBlcyBuYWNoIHdh cyBhdXNzaWVodCAhISEhITwvVEQ+CiAgICAgIDxURD48aW1nIHNyYz0iU21pbGV5QXROaWdodC5i bXAiPiA8L1REPgogICAgPC9UUj4KCiAgICA8VFIgQUxJR049ImxlZnQiIFZBTElHTj0ibWlkZGxl Ij4KICAgICAgPFREPiBCZWlzcGllbHRleHQsIGRlciBoaWVyIG51ciBzdGVodCBkYW1pdCBlcyBu YWNoIHdhcyBhdXNzaWVodCAhISEhITwvVEQ+CiAgICAgIDxURD48aW1nIHNyYz0iU21pbGV5QXRO aWdodC5ibXAiIHdpZHRoPSI1MHB4Ij4gPC9URD4KICAgIDwvVFI+CgogICAgPFRSIEFMSUdOPSJs ZWZ0IiBWQUxJR049Im1pZGRsZSI+CiAgICAgIDxURD4gQmVpc3BpZWx0ZXh0LCBkZXIgaGllciBu dXIgc3RlaHQgZGFtaXQgZXMgbmFjaCB3YXMgYXVzc2llaHQgISEhISE8L1REPgogICAgICA8VEQ+ PGltZyBzcmM9J2h0dHA6Ly90ZXN0c2VydmVyLmJpdHdvcmtzL35jYXJzdGVuL2Zvcm1tYWlsZXIv cmVobGF0ZWQvU21pbGV5QXROaWdodDQuYm1wJz4gPC9URD4KICAgIDwvVFI+CgogICAgPFRSIEFM SUdOPSJsZWZ0IiBWQUxJR049Im1pZGRsZSI+CiAgICAgIDxURD48aW5wdXQgdHlwZT0ic3VibWl0 IiBuYW1lPSJidG5fc2VuZGVuIiB2YWx1ZT0iRW1haWwgYW4gZWluZW4gRnJldW5kIj4gPC9URD4K ICAgICAgPFREPiA8L1REPgogICAgPC9UUj4KCiAgPC9UQUJMRT4KICA8L2Zvcm0+CiAgPC9CT0RZ PgogIDwvSFRNTD4="; $html= "
Beispieltext, der hier nur steht damit es nach was aussieht !!!!!
Beispieltext, der hier nur steht damit es nach was aussieht !!!!!
Beispieltext, der hier nur steht damit es nach was aussieht !!!!!
Beispieltext, der hier nur steht damit es nach was aussieht !!!!!
Beispieltext, der hier nur steht damit es nach was aussieht !!!!!
"; #$maildat["html"] = $html; #$maildat["htmlpath"] = "/home/thomas/public_html/test/Formmailer/html/"; if (mime_mail($maildat)>0) { echo "Mail wurde versandt.
"; } else { echo "Fehler beim Mailversand
"; } } #echo "
";
#print_r($out);
#echo htmlentities($html);
#echo "
"; #echo gettype($out[2][3][0]); ?>