ciao , sto cercando di creare una specie di mail-list che pesca gi indirizzi da un database.
Le mail le invia , ma deve esserci un errore sulla codifica .
su gmail viene inviato il messaggio correttamente ma l'allegato non ha nome (il meno) e non ha consistenza; ossia viene visualizzato ma non si riesce ne a leggere ne a scaricare.
su hotmail viene stampato (penso) l'allegato codificato e non viene visualizzato il file .
lo script lo riadattato alle mie esigenze , ma non caisco dove possa essere l'errore!
Codice PHP:
<?php
include 'connect.php';
$mittente = $_POST['mittente'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
$headers = "From: " . $mittente;
$msg="";
if (!$connesso){
die ("errore nella connessione al database\n -----> " .mysql_error());
}
if (is_uploaded_file($allegato)){
//apro e leggo l'allegato
$file = fopen($allegato, "rb");
$data = fread($file, filesize($allegato));
fclose($file);
//adatto il file al firmato MINE base64 usando base64_encode
$data = chunk_split(base64_encode($data));
//genero il separatore , serve per dividere le parti testuali all'allegato
$semi_rand = md5(time());
$mine_boundary = "==Multipart_Boundary_x{$semi_rand}x";
//aggiungo le intestazioni necessarie per l'allegato
$headers .= "\nMINE-version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= "boundary=\"{$mine_boundary}\"";
//definisco il tipo di messaggio (MINE-multi-part)
$msg .= "THIS IS A NEW MESSAGE \n\n";
//mettiamo il separatore al messaggio
$msg .= "--{$mine_boundary}\n";
//Questa è la parte "testuale"del messaggio
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $messaggio ."\n\n";
//metto il sepaaratore
$msg .= "--{$mine_boundary}\n";
//aggiungo l'allegato alla mail
$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename=\"{$allegato_name}\"\n";
$msg .= "Content-Transfert-Encoding: base64\n\n";
$msg .= $data . "\n\n";
//chiudo con il separatore
$msg .= "--{$mine_boundary}--\n";
}else{
$msg .= $messaggio;
}
$sql = "SELECT email_add FROM mail_list;";
$query = mysql_db_query($db_nome, $sql);
while($row = mysql_fetch_assoc($query)){
$destinatario = $row['email_add'];
$invio = mail($destinatario, $oggetto, $msg , $headers);
}
//invio della mail vera e propria
if ($invio){
echo "email inviata";
}else{
echo "errore nell'invio della mail";
}
?>
inserisco il codice per miglior comprensione.
Grazie anticipatamente dellaiuto..