Newsgroup: it.comp.www.php
Titolo: allegato in pdf (file danneggiato)

Ciao,
ho creato uno script che da un elenco per ogni utente creo e poi invio via
email la fattura in formato pdf.
1. Lo script crea normalmente il file pdf che funziona alla perfezione (lo
apro e lo vedo correttamente).
2. Mi invia la mail in formato HTML correttamente
3. Mi allega il file correttamente
Problema
Il pdf in allegato, quando lo vado ad aprire mi da msg d'errore 'file
danneggiato'.
Grazie in anticipo a chi mi da una mano.
Ecco il codice inserito (riferito all'invio dell'allegato pdf già salvato
sul server):
PHP:
<?
$mess="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML><HEAD>
<META http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\">
<STYLE>
H5 {text-align: justify; text-decoration: none; color: #333333; font-size:
12px; font-family: Arial}
A:link, A:visited, A:hover { color: #CC0000 }
</STYLE>
</HEAD>
<BODY>
<p><img src=\"
http://www.spininside.it/layout/images/titolo1.gif\
" width=270
height=56></p>
<p>
<DIV>Gentile utente, <br>
con la presente alleghiamo la fattura relativa all'importo versato.<br>
Con l'occasione porgiamo cordiali saluti.<br>
<br>
</BODY></HTML>";
/*Nella variabile $mess va inserito tutto il codice html che comporrà il
corpo dell'email che si vuole inviare. Come nell'esempio si possono
utilizzare anche i fogli di stile.*/
$e="$a5"; /*Inserire l'indirizzo email a cui si vuole spedire l'email*/
$ogg="Oggetto msg"; /*Inserire l'oggetto dell'email da spedire*/
$mittente="
in...@miodominio.it
"; /*Inserire l'indirizzo email che verrà
visulaizzato come mittente dell'email*/
$reply="
in...@miodominio.it
"; /*Inserire l'indirizzo email a cui verranno
inviate le risposte all'email inviata*/
$titolo="{$a10}_{$a1}_{$a2}_{$a8}.pdf"; /*Inserire il nome che si vuole dare
allegato*/
$f="E:/Fatture/gen-feb-mar04/{$a10}_{$a1}_{$a2}_{$a8}.pdf"; /*Inserire
l'indirizzo del file che si vuole inviare come allegato*/
$filetype="application/pdf"; /*Inserire il formato MIME del file da
allegare*/
/*Non modificare nulla al di sotto di questa linea*/
$intestazioni = "From: $mittente\nReply-To: $reply\nX-Mailer: Sismail Web
Email Interface\nMIME-version: 1.0\nContent-type: multipart/mixed;\n
boundary=\"Message-Boundary\"\nContent-transfer-encoding:
7BIT\nX-attachments: $titolo";
$body_top = "--Message-Boundary\n";
$body_top .= "Content-type: text/html; charset=iso-8859-1\n";
$body_top .= "Content-transfer-encoding: 7BIT\n";
$body_top .= "Content-description: Mail message body\n\n";
$msg_body = $body_top . $mess;
$filez = fopen($f, "r");
$contents = fread($filez, filesize($f));
$encoded_attach = chunk_split(base64_encode($contents));
fclose($filez);
$msg_body .= "\n\n--Message-Boundary\n";
$msg_body .= "Content-type: $filetype; name=\"$titolo\"\n";
$msg_body .= "Content-Transfer-Encoding: BASE64\n";
$msg_body .= "Content-disposition: attachment; filename=\"$titolo\"\n\n";
$msg_body .= "$encoded_attach\n";
$msg_body .= "--Message-Boundary--\n";
if(!(@mail($e,$ogg,$msg_body, $intestazioni)))
 {echo "E-Mail non inviata";}
 else {echo "E-Mail inviata";}
?>

Beppe wrote:

Hai verificato che il file venga effettivamente letto e encodato?
Hai dato uno sqguardo al formato grezzo dell'email che ti arriva? Noti 
nulla di strano, magari qualche carattere o qualche \n di troppo a fondo 
dell'allegato.. non so..
-- 
--
Togli il _nulla_ per rispondermi

 dell'allegato.. non so..
Ho controllato... il codice encodato del file pdf è perfettamente uguale a
quello di una mail a cui ho aggiunto manualmente lo stesso file ed inviato
via outlook.
Dici che potrebbe dipendere da qualche informazione aggiuntiva degli
headers?
Grazie cmq.