Newsgroup: it.comp.www.php
Titolo: aiuto su attachment

salve  a tutti
allora come scrissi tempo fa mi sono fatto una pagina in php per l'invio di 
dati con allegato attraverso la funzione mail
ecco il mio spezzone di codice
 $dc=getdate();
 $dcg=$dc['mday'];
 $dcm=$dc['month'];
 $dca=$dc['year'];
 $attach = $_FILES["foto"]["tmp_name"];
 $file_name = $_FILES["foto"]["name"];
 $file_type = $_FILES["foto"]["type"];
 $file_size = $_FILES["foto"]["size"];
 // DELIMITATORE
 $boundary = md5(uniqid(microtime()));
 // APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
 $file = @fopen($attach, "r");
 $contents = @fread($file, $file_size);
 $encoded_attach = chunk_split(base64_encode($contents));
 @fclose($file);
// INTESTAZIONI DELLA MAIL
 $mail_headers .= "MIME-version: 1.0\n";
 $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
 $mail_headers .= "X-attachments: $file_name\n";
// COSTRUIAMO IL CORPO DELLA MAIL
 $mail_body = "--$boundary\n";
 $mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
 $mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
 $mail_body.="<p>sig.r/sig.ra ".$cognome."\n";
 $mail_body.="<p>nome ".$nome."\n";
 if ($_POST['rag']!='') {
  $mail_body.= "<p>Responssabile o referente della società/ente: 
".$_POST['rag']."\n";
  $mail_body.= "<p>Con Partita Iva<p>".$_POST['piva']."\n";}
  $mail_body.="<p>Indirizzo di spedizione: ".$_POST['indirizzo']."\n";
  $mail_body.="<p>Località di spedizione: ".$_POST['localita']."\n";
  $mail_body.="<p>Cap di spedizione: ".$_POST['cap']."\n";
  $mail_body.="<p>Telefono per contatto: ".$_POST['tel']."\n";
  $mail_body.="<p>Email di contatto: ".$_POST['em1']."\n";
  if ($_POST['dati_pagamento']!='') {
  $mail_body.="<p>Estremi pagamento: ".$_POST['dati_pagamento']."\n";}
 $mail_body .= "--$boundary\n";
 $mail_body .= "Content-type: $file_type; name=\"$file_name\"\n";
 $mail_body .= "Content-Transfer-Encoding: base64\n";
 $mail_body .= "$encoded_attach\n";
 $mail_body .= "--$boundary--\n";
 $oggetto="Richiesta d'ordine  del $dcg/$dcm/$dca\n";
  if  (mail("
pi...@libero.it
",$oggetto,$mail_body,$mail_headers))  {
  echo '<body bgcolor="lightblue">';
  echo '<h3>'.'<p>'.'La trasmissione dell\'ordinativo è stata completata con 
successo'.'<p>';
  echo '<a href="visualizza.php">Torna alla pagina di ricarca 
prodotti</a><p>';
  echo '<a href="/prova">Torna alla Home Page</a>';
la mail arriva e anche l'allegato con nome ma quando si apre non si vede 
l'immagine dove sbaglio ?
Grazie per l'aiuto.
Giuseppe 

 $dc=getdate();
[..]
ci sono diversi errori..
grammaticali, violazione della RFC competente , errori di prestazione etc
correggendo qua e la il tuo codice (ma ti giuro che c'e' ancora tanto da
fare :-) ) ho scritto questo che genera una mail che sembra valida..
e' probabile che non stai visualizzando bene perche' mancano dei new line in
alcuni punti chiave.. ma non sono troppo sicuro e' una vita che ho letto la
RFC che regola questo standard..
e comunque 
http://www.php-faq.org/UsingAtOperand
http://www.php-faq.org/SanitizePostGet
non completamente testato e da riscrivere (ho tolto anche l'invio della mail
per fare il test)..
<?php
$attach = $_FILES["foto"]["tmp_name"];
$file_name = $_FILES["foto"]["name"];
$file_type = $_FILES["foto"]["type"]; // sicuro che sia "image/xxx"?
$file_size = $_FILES["foto"]["size"];
// DELIMITATORE
$boundary = md5(uniqid(microtime()));
// APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
// qui potresti usare tranquillamente 
http://php.net/file_get_contents
//  $encoded_attach = 
//  chunk_split(base64_encode(file_get_contents($attach)));
$file = @fopen($attach, "r");
$contents = @fread($file, $file_size);
$encoded_attach = chunk_split(base64_encode($contents));
@fclose($file);
$oggetto = "Richiesta d'ordine  del " . date("d/F/Y");
// INTESTAZIONI DELLA MAIL
$mail_headers = <<<HEADERS
MIME-version: 1.0
Content-type: multipart/mixed; boundary="$boundary"
X-attachments: $file_name
HEADERS;
// COSTRUIAMO IL CORPO DELLA MAIL
if ($_POST['rag']!='') {
 $rag = "Responsabile o referente della societa'/ente: {$_POST['rag']}\n".
        "Con Partita Iva<p>{$_POST['piva']}";
}
if ($_POST['dati_pagamento'] != '') {
  $pag = "Estremi pagamento: {$_POST['dati_pagamento']}";
}
$mail_body = <<<BODY
--$boundary
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
sig.r/sig.ra $cognome
nome $nome
$rag
Indirizzo di spedizione: {$_POST['indirizzo']}
Localita' di spedizione: {$_POST['localita']}
Cap di spedizione: {$_POST['cap']}
Telefono per contatto: {$_POST['tel']}
Email di contatto: {$_POST['em1']}
$pag
--$boundary
Content-type: $file_type; name="$file_name"
Content-Transfer-Encoding: base64
$encoded_attach
--$boundary--
BODY;
?>
-- 
www.iuz-lab.info
 - 
www.php-faq.org