Portál AbcLinuxu, 16. července 2025 07:49


Dotaz: PHP problem s pdf prílohou v emaile - zobrazená v tele

12.4.2011 12:23 adrinko | skóre: 22
PHP problem s pdf prílohou v emaile - zobrazená v tele
Přečteno: 401×
Odpovědět | Admin
Dobrý deň,

prosím Vás o radu, mám obrovský problém s týmto kódom:
<.php
$attachment = chunk_split(base64_encode(file_get_contents("priloha.pdf"))); 
//define the body of the message. 
ob_start(); //Turn on output buffering 
.> 
--PHP-mixed-<.php echo $random_hash; .>  
Content-Type: multipart/alternative; boundary="PHP-alt-<.php echo $random_hash; .>" 

--PHP-alt-<.php echo $random_hash; .>  
Content-Type: text/plain; charset="utf-8" 
Content-Transfer-Encoding: 7bit

<.php echo "Tu je text emailu."; .>

--PHP-alt-<.php echo $random_hash; .>-- 

--PHP-mixed-<.php echo $random_hash; .>  
Content-Type: application/pdf; name="<.php echo "priloha.pdf"; .>"  
Content-Transfer-Encoding: base64  
Content-Disposition: attachment  

<.php echo $attachment; .> 
--PHP-mixed-<.php echo $random_hash; .>-- 

<.php 
//copy current buffer contents into $message variable and delete current output buffer 
$message = ob_get_clean(); 
//send the email 
$mail_sent = @mail( $to, "=.UTF-8.B.".base64_encode($subject).".=", $message, $headers );
.>
Hlavne na gmail.com a yahoomail sa popríchode takéhoto emailu stáva, že je to chybne interpretované a príloha aj s textom sa zobrazí v textovej časti emailu, teda príloha nie je ako príloha. v čom tam je problém?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.4.2011 13:42 chrono
Rozbalit Rozbalit vše Re: PHP problem s pdf prílohou v emaile - zobrazená v tele
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebolo by jednoduchšie používať na odosielanie emailov nejakú knižnicu (napr. phpMailer)?
12.4.2011 14:20 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: PHP problem s pdf prílohou v emaile - zobrazená v tele
Odpovědět | | Sbalit | Link | Blokovat | Admin
Problem je mlutipart/alternative - tim riakte, ze obe casti jsou "to same", jen v jinem formatu. Email klient si pak vybere tu kterou umi zobrazit a ma "lepsi" zobrazovaci vlastnosti. Asi jako quick-fix bych videl nahradit multipart/alternative za multipart/mixed, viz RFC2046.
12.4.2011 16:14 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: PHP problem s pdf prílohou v emaile - zobrazená v tele
zdravim, multipart nebol v mojom pripade problem. pravdepodobne to bolo nespravne zadefinovane boundary=PHP-mixed- a biele konce riadkov.

prikladam opraveny script kde to uz funguje na yahoo aj gmal.
<.php 
$headers .= "\r\nContent-Type: multipart/mixed; boundary=PHP-mixed-".$random_hash; 
$attachment = chunk_split(base64_encode(file_get_contents("priloha.pdf"))); 
//define the body of the message. 
ob_start(); //Turn on output buffering 
.>

--PHP-mixed-<.php echo $random_hash; .>

Content-Type: multipart/alternative; boundary="PHP-alt-<.php echo $random_hash; .>"

--PHP-alt-<.php echo $random_hash; .>

Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit

<.php echo "text mejlu"; .>

--PHP-alt-<.php echo $random_hash; .>--

--PHP-mixed-<.php echo $random_hash; .>

Content-Type: application/pdf; name="<.php echo "priloha.pdf"; .>"
Content-Transfer-Encoding: base64
Content-Disposition: attachment

<.php echo $attachment; .>

--PHP-mixed-<.php echo $random_hash; .>--

<.php 
//copy current buffer contents into $message variable and delete current output buffer 
$message = ob_get_clean(); 
//send the email 
$mail_sent = @mail( $to, "=.UTF-8.B.".base64_encode($subject).".=", $message, $headers ); 
.>

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.