Autor | Zpráva | ||
---|---|---|---|
Pavel Dumbrovský Profil |
#1 · Zasláno: 12. 1. 2011, 20:51:54
Dobrý den,
mám problém se skriptem pro odesílání mailu s pdf přílohou. Na seznamu všechno ok, ale na gmail to přijde bez textu a s jakousi přílohou noname - v té se nachází ten text, ale příloha pdf nikde. Tady je kód: function cs_mail ($to, $predmet, $zprava, $name, $mail){ $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; global $cf; global $lang; $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $name = "=?utf-8?B?".base64_encode(autoUTF ($name))."?="; $head = "From: \"".$name."\" <".$mail.">\n"; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: multipart/mixed; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = chunk_split(base64_encode (autoUTF ($zprava))); $zprava .= "\nThis is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: base64\n\n" . $zprava . "\n\n"; /********************************************** Příloha ********************************************/ global $variabil; $fileatt = "".$variabil.".pdf"; // Cesta k souboru $fileatt_type = "application/pdf"; // Typ souboru $fileatt_name = "".$variabil.".pdf"; // Název souboru připojeného k e-mailu v příloze $file = fopen($fileatt,'rb'); $data = fread($file,filesize($fileatt)); fclose($file); $data = chunk_split(base64_encode($data)); $zprava .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; unset($data); unset($file); unset($fileatt); unset($fileatt_type); unset($fileatt_name); Když změním první Content-Type na text/plain , na gmailu se sice zobrazí text (příloha furt nikde), ale na seznam to dojde bez přílohy. Nemá někdo zkušenost, čím to může být? Díky. |
||
Tori Profil |
#2 · Zasláno: 12. 1. 2011, 21:51:12
A čím to posíláte, PHPMailer? Doplňte, prosím, ještě zbytek kódu.
|
||
Pavel Dumbrovský Profil |
#3 · Zasláno: 12. 1. 2011, 21:54:37
Ne, toto je téměř kompletní funkce pro odeslání mailu s přílohou, ještě je tedy na konci té funkce
$stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } :) Chyba musí být někde v deklaraci té hlavičky. Nebo ne chyba, ale něco co se nelíbí gmailu... |
||
Pavel Dumbrovský Profil |
#4 · Zasláno: 12. 1. 2011, 21:56:10
Ještě tedy pro úplnost doplním funkci která se odsud volá:
function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } Ale toto je skript stažený odsud z diskuze z FAQ, jen doplněný o tu přílohu.. Vždy mi to v pohodě jelo, na seznam i s tou přílouhou. |
||
Davex Profil |
#5 · Zasláno: 12. 1. 2011, 22:15:47
V hlavičce by mělo být
$head .= "Content-Type: multipart/mixed; boundary=\"{$mime_boundary}\"\n"; |
||
Pavel Dumbrovský Profil |
#6 · Zasláno: 12. 1. 2011, 22:33:08
Davex:
„boundary=\"{$mime_boundary}\"\n";“ Jste machr! Já tušil, že to bude prkotina. :) Mockrát děkuji, jak se Vám můžu odvděčit? Mohl bych Vám třeba otevřít zavařovačky, s kterými jste nepohnul.. :) |
||
Časová prodleva: 13 let
|
0