Portál AbcLinuxu, 12. května 2025 08:36

Dotaz: PHP mail() s přílohou MS WORD

10.1.2006 10:28 Open Mage | skóre: 24 | Lom
PHP mail() s přílohou MS WORD
Přečteno: 1909×
Odpovědět | Admin
Ahoj, nemáte prosím někdo zkušenost s posláním emailu s přílohou .doc z PHP mail() funkce ? Ideálně multipart message, dělal jsem takhle u PDF přílohu, tam nebyl problém, když jsem v tom stejném skriptu změnil content type z application/pdf na application/msword - normálně to projde, ale wordovskej dokument mi kupodivu pak z mailu otevře vpořádku jen Linux a OpenOffice, MS Office však nahlásí, že jde o poškozený soubor.

Přikládám zdroják :
$email_from = "odkoho@domena.cz"; // Od koho je e-mail
$email_from_name = "OD KOHO"; // Od koho je e-mail (název společnosti)
$clearsubject = "Potvrzení objednávky";
$encodedsubject = base64_encode ($clearsubject);
$subject = "=?iso-8859-2?B?$encodedsubject?=";

$email_message = "
Vážený zákazníku,
na základě telefonické domluvy a tak dále"; // Tělo zprávy e-mailu

$email_to = "<$komu>"; // Komu má být e-mail poslán

$headers = "From: " . $email_from_name . "<" . $email_from . ">";

$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
   
$headers .= "\nMIME-Version: 1.0\n" . 
            "Content-Type: multipart/mixed;\n" . 
            " boundary=\"{$mime_boundary}\"";
$headers .= "\nX-Sender: odkoho@domena.cz";
$headers .= "\nReply-To: odkoho@domena.cz";
$headers .= "\nX-Mailer: PHP";
$headers .= "\nX-Priority: 3";

$email_message .= "\nThis is a multi-part message in MIME format.\n\n" . 
                "--{$mime_boundary}\n" . 
                "Content-Type:text/html; charset=\"iso-8859-2\"\n" . 
                "Content-Transfer-Encoding: 7bit\n\n" . 
$email_message . "\n\n"; 

/********************************************** Příloha ********************************************/

$fileatt = "Exkluzivni_nabidka.doc"; // Cesta k souboru                 
$fileatt_type = "application/msword"; // Typ souboru
$fileatt_name = "Exkluzivni_nabidka.doc"; // 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)); 

$email_message .= "--{$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);

/********************************************** Konec konfigurace přílohy ********************************************/

# samotný příkaz k odeslání e-mailu
$ok = @mail($email_to, $email_subject, $email_message, $headers);
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.1.2006 11:23 tom84 | skóre: 6
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim do Teplic ;)
Presnou odpoved nevim, ale podle RFC by mel email koncit --boundary-- a ne --boundary jak tam mas ty. Zkusil bych zmenit to (nevim to ale jiste, nezkousel jsem). Vypadalo by to pak asi nasledne:
                 .
                 .
                 .
                 $data . "\n\n" . 
                  "--{$mime_boundary}--\n"; 
unset($data);
.
.
.
Bude to mozna tim ze emailovy klient nepozna kde je konec zpravy a tak k souboru jeste neco pribali.
Jinak na builder.cz vysel clanek, jak posilat email z PHP, tak snad by slo vycist z nej co je spatne, popr. odtamtud neco pouzit. http://www.builder.cz/art/php/emailsprilohou.html
"One World, One web, One program" - Microsoft Promo "Ein Volk, Ein Reich, Ein Fuhrer" - Adolf Hitler
10.1.2006 13:42 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Díky moc kolego :o) pomohlo to castecne :o)
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
10.1.2006 15:02 Jarek Šeděnka
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vim ze to neodpovida primo na dotaz, ale neuvazoval jste nad PHPMailerem?
10.1.2006 17:11 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Četl jsem o tom něco, ale zatím se mi nechtělo tuhle nadstavbu využívat. Nakonec se mi to nějak podařilo a chodí to. Díky
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
20.9.2007 19:33 jouda
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prosím o radu, nevíte někdo jak poslat v PHP více příloh než jednu? S jednou přílohou to funguje, ale nedaří se mi poslat více souborů. Díky.
20.9.2007 19:49 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Za prvé, tohle je rok a půl starý nesouvisející vyřešený dotaz, tady vám nikdo neodpoví. Položte nový dotaz v poradně. A až budete v tom kladení dotazu, doplňte rovnou co znamená „nepodařilo se“.
20.9.2007 19:54 jouda
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Nezlobte se, ale takovéhle "rady" opravdu nesnáším. Našel jsem tenhle příspěvěk v google, neznám tenhle server a prostě jsem chtěl radu ve fóru. Pokud je dotaz uzavřen, nemělo by jít do něj dále psát. Díky za pochopení.
20.9.2007 19:55 jouda
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
p.s. nepodařilo se znamená, že přijde pouze jedna příloha ne více
20.9.2007 20:05 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: PHP mail() s přílohou MS WORD
Omlouvám se, na druhý „únos“ dotazu během jediného dne už jsem nedokázal zareagovat vlídně.

Zkuste se zeptat ve zdejší Poradně. Sice je to poradna Linuxová, ale programátorské dotazy související s Linuxem se tady po poslední anketě snad tolerují.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.