Invio email multiple da form

coccobil

Utente Attivo
28 Ott 2005
36
0
6
Ciao a tutti.
Sono un novizio del php e mi chiedevo se potreste aiutarmi in un problema che non riesco a risolvere:
1)Devo prelevare degl'indirizzi mail da un db Mysql.
2)Selezionarne alcuni (o tutti).
3)Inviare le mail ( eventualmente con allegati ) ai vari destinatari in modo che ognuno non visualizzi l'indirizzo dell'altro.

Le fasi 1 e 2 sono risolte.

Per la fase 3 ho creato un file email.php che raccoglie i dati già estratti e selezionati da un precedente file (che funziona correttamente)

PHP:
<?
include("connect.php");
$result = mysql_query("select * from dati_utenti");
$row = mysql_fetch_array($result);
echo "<body bgcolor=\"#FFFFCC\">";
echo "<form action=\"invia_mail.php\" enctype=\"multipart/form-data\" method=\"POST\">"; 
 $email = $_POST['emailcheckbox'];
for($i=0;$i < sizeOf($email); $i++){
echo "<input type=\"hidden\" name=\"destinatario\" value=\"$email[$i]\">";
}
echo "<br/><font size=\"1\" face=\"Verdana\">Oggetto:<br>";
echo "<font size=\"1\" face=\"Verdana\"><input type=\"text\" name=\"oggetto\" size=\"25\"><br><br/>";
echo "<font size=\"1\" face=\"Verdana\">Testo:<br>";
echo "<textarea name=\"testo\" rows=\"10\" cols=\"40\"></textarea><br><br/>";
echo "<font size=\"1\" face=\"Verdana\">Allegato:"."<br><br/>";
echo "<input type=\"file\" name=\"attach\" size=\"25\"><br><br>";
echo "<td height=\"25\" valign=\"bottom\" colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Spedisci\"></td>";
echo "</form>";
?><br>
<?
include("pppc.php");
?>
</body>
</html>

il file a cui punta nell'action è invia_mail.php

PHP:
<?PHP
/*error_reporting(0);*/

    $destinatario = $_POST["destinatario[]"]; 
    for($i=0;$i < sizeOf($destinatario); $i++){
    $destinatari= $destinatario[$i];
    $oggetto = stripslashes($_POST["oggetto"]); 
    $testo = stripslashes($_POST["testo"]);
    // specifichiamo le propriet dell'allegato
    $attach = $_FILES["attach"]["tmp_name"]; 
    $nome_allegato = $_FILES["attach"]["name"]; 
    $tipo_di_allegato = $_FILES["attach"]["type"]; 
    $grandezza_allegato = $_FILES["attach"]["size"]; 

    // impostiamo il delimitatore 
    $boundary = md5(uniqid(microtime())); 

    // apriamo il documento in allegato, leggiamolo, stabiliamone la codifica e chiudiamolo
    $file = fopen($attach, "r"); 
    $leggi = fread($file, $grandezza_allegato); 
    $codifica = chunk_split(base64_encode($leggi)); 
    fclose($file);

    // inseraimo le intestazioni che ci interessano 
    $intestazione .= "MIME-version: 1.0\n"; 
    $intestazione .= "Content-type: multipart/mixed; boundary=\"$delimitatore\"\n"; 
    $intestazione .= "Content-transfer-encoding: 7BIT\n"; 
    $intestazione .= "X-attachments: $nome_allegato\n";

    // stabiliamo il formato della mail 
    $formato = "--$delimitatore\n"; 
    $formato .= "Content-Type: text/plain; charset=us-ascii\n"; 
    $formato .= "Content-Transfer-Encoding: 7bit\n\n"; 
    $formato .= "$testo\n\n"; 
    $formato .= "--$delimitatore\n"; 
    $formato .= "Content-type: $tipo_di_allegato; name=\"$nome_allegato\"\n"; 
    $formato .= "Content-Transfer-Encoding: BASE64\n"; 
    $formato .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n"; 
    $formato .= "$codifica\n"; 
    $formato .= "--$delimitatore--\n";

    // utilizziamo la funzione mail per inviare e if per ottenere un messaggio di conferma
    if(mail($destinatario[$i]. ", ", $oggetto, $formato, $intestazione)) 

    { 
        echo "Mail inviata correttamente!";
    } 
}
?>

Purtroppo le mail non vengono inviate.

Qualche idea?
Grazie mille e cordiali saluti a tutti.

Massimo
 

Discussioni simili