Newsgroup: it.comp.www.php
Titolo: Allegato = 0

Vi posto il codice che deve inviare una mail con allegato. Funziona tutto
solamente che il file in allegato è = 0
E' da stamattina che provo e cerco dove sia l'errore. Potete darci
un'occhiata Voi e spiegarmi l'errore?
<?php
if(!isset($_POST)) $_POST = $HTTP_POST_VARS;
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
$Destinatario = trim($_POST["Destinatario"]);
$Soggetto = trim(stripslashes($_POST["Soggetto"]));
$Contenuto = trim(stripslashes($_POST["Contenuto"]));
$attach = $_FILES["allegato"]["tmp_name"];
$file_name = $_FILES["allegato"]["name"];
$file_type = $_FILES["allegato"]["type"];
$file_size = $_FILES["allegato"]["size"];
$boundary = md5(uniqid(microtime()));
$file = @fopen($attach, "r");
$contents = @fread($file, $file_size);
$encoded_attach = chunk_split(base64_encode($contents));
@fclose($file);
$mail_headers .= "MIME-version: 1.0\n";
$mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
$mail_headers .= "X-attachments: $file_name\n";
$mail_body = "--$boundary\n";
$mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
$mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
$mail_body .= "$Contenuto\n\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";
if(@mail($Destinatario, $Soggetto, $mail_body, $mail_headers))
{
echo "La mail è stata inoltrata con successo.";
}
 else
{
echo "Si sono verificati dei problemi nell'invio della mail.";
}
?>
Onde evitare confusione vi posto anche il form:
<form action="mail.php" enctype="multipart/form-data" method="POST">
<table cellpadding="0" cellspacing="0">
<tr>
<td>Destinatario: </td>
<td><input type="text" name="Destinatario" size="40"></td>
</tr>
<tr>
<td>Soggetto:</td>
<td><input type="text" name="Soggetto" size="40"></td>
</tr>
<tr>
<td>Allegato:</td><td><input type="file" name="allegato" size="40"></td>
</tr>
<tr>
<td valign="top">Contenuto:</td>
<td><textarea name="Contenuto" rows="15" cols="50"></textarea></td>
</tr>
<tr>
<td height="30" valign="bottom" colspan="2" align="center"><input
type="submit" value="Invia la mail">
</tr>
</table>
</form>
--
Cristian aKa Cc
--

 solamente che il file in allegato è = 0
Che intendi per = 0? ti riferisci alla dimensione del file? hai provato a
fare un echo di $_FILES["allegato"]["tmp_name"] e simili?
Magari non hai attivo l'upload dei file nel php.ini
inoltre a partire da PHP 4.2.0, puoi verificare eventuali errori nell upload
con $_FILES['userfile']['error']
qui trovi i significati dei codici d'errore:
http://it.php.net/manual/it/features.file-upload.errors.php
ste

 Magari non hai attivo l'upload dei file nel php.ini
oppure, ora che ci ripenso, potrebbe non andare a scrivere il file nella dir
tmp, perchè magari non impostata
cmq guarda qui le note relative all configurazione del php.ini:
http://us4.php.net/manual/it/configuration.directives.php#ini.upload-tmp-dir
http://us4.php.net/manual/it/configuration.directives.php#ini.file-uploads
http://us4.php.net/manual/it/configuration.directives.php#ini.post-max-size
http://us4.php.net/manual/it/configuration.directives.php#ini.upload-max-filesize
http://us4.php.net/features.file-upload

 tmp, perchè magari non impostata
però ora che ripenso anche a questo se non viene impostata nessuna directory
automaticamente il sistema ne dovrebbe usare una di default...
ste