| 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: 16 let
|
|||
0