Salve a tutti, è circa 1 settimana che mi picchio con il PHP per inviare una email tramite un form con un allegato. Googlando un po ho trovato qualche cosa ma niente che funzioni al 100 %: con qualche guida non arriva l'allegato, con altre arriva tutto perfetto tranne sulle email @libero.it, e l'ultimo script che ho personalizzato che invia tutto perfetto tranne l'email su libero dove l'allegato non ha nome ed estensione e quindi non lo lascia nemmeno scaricare........
Chiedo aiuto a voi!!!!! posto lo script prodotto:
Codice PHP:
// Recupero il valore dei campi del form
$oggetto = $_POST['oggetto'];
$messaggio2 = $_POST['messaggio'];
$mail = $_POST['mittente'];
//carico file allegato
$attach = $_FILES["allegato"]["tmp_name"];
$file_name = $_FILES["allegato"]["name"];
$file_type = $_FILES["allegato"]["type"];
$file_size = $_FILES["allegato"]["size"];
// DELIMITATORE
$boundary = md5(uniqid(microtime()));
// APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
$file = @fopen($attach, "rb");
$contents = @fread($file, $file_size);
$encoded_attach = chunk_split(base64_encode($contents));
@fclose($file);
// INTESTAZIONI DELLA MAIL
$headers = "From: Mittente <noreply@mittente.biz>\n";
$headers .= "To: Destinatario fittizio <news-tutti@clienti.xxxbiz>\n";
$headers .= "BCC: $destinatario\r\n";
$headers .= "MIME-version: 1.0\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
$messaggio = "OGGETTO NEWS = $oggetto \n\n\n";
$messaggio .= "$messaggio2 \n\n\n\n\n\n";
$messaggio .= "--- \n";
// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($attach))
{
// COSTRUIAMO IL CORPO DELLA MAIL
$msg = "This is a multi-part message in MIME format.\n--$boundary\n";
$msg .= "Content-Type: text/plain; charset=iso-8859-9\n";
$msg .= "Content-Transfer-Encoding: 8bit\n\n" . $messaggio ."\n";
$msg .= "--$boundary\nContent-type: $file_type;\n name=\"$file_name\"\n";
$msg .= "Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$file_name\"\n";
$msg .= chr(13) . chr(10).$encoded_attach."\n";
}
else
{
$msg = $messaggio;
}
// Invio la mail
if (mail("", $oggetto, $msg, $headers))
{
echo "Mail inviata a $sendmail";
}else{
echo "<p>Errore Invio Mail!</p>";
}
Vi ringrazio in anticipo
Segnalibri