OK, PROVO A POSTARE IL CODICE
Chiedo umilmente scusa a tutti per lo spaghetti code qui sotto...
Purtroppo la mancanza di tempo, le continue modifiche e test e la compressione del tutto per raggrupparlo in un unico file da incollare qui sul forum, hanno contribuito a peggiorare notevolmente lo script... grazie
<?php
require 'testa.php';
##########################################
/*
* Classe che prende indirizzi e-mail da un database MySQL,
* li suddivide in blocchi (20 di default) e invia una e-mail personalizzata
* ad ognuno di questi destinatari.
*/
$met = '900';
$fdd = '20';
$anteprima = stripslashes($_POST['anteprima_seria']);
// includo le librerie necessarie alla connnessione al database
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";
include "mdb-database/config.inc.php";
$swift =& new Swift(new Swift_Connection_SMTP("smtp.aruba.it", 25));
// estendo il max_execution_time a TOT minuti per ogni invio in blocco
ini_set('max_execution_time', $met);
ini_set('display_errors', 'Off');
// id newsletter
$id_nl = htmlspecialchars($_POST['id']);
// OGGETTO DELLA NEWSLETTER
$path = 'h t t p : / / w w w . m i o s i t o . i t /';
// TESTO DELLA NEWSLETTER
$testo = '';
$testo .= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title>Newsletter</title>';
$testo .= '<META http-equiv="Content-Type" content="text/html; charset=UTF-8">';
$testo .= '<link rel="stylesheet" type="text/css" href="'.$path.'style.css" />';
$testo .= '</head><body>';
// CONTENT
$testo .= $_POST['anteprima_seria'];
$testo .= '</body></html>';
// IMPOSTO LA NEWSLETTER COME "INVIATA"
$sql_nl_inviata = 'UPDATE archivio SET inviata="1", data_invio="'.date("Y-m-d").'" WHERE id="'.$id_nl.'"';
@mysql_query($sql_nl_inviata, $conn);
// PREPARO ED ESEGUO L'INVIO
// calcolo il numero di blocchi da considerare
$sql_count_indirizzi = 'SELECT COUNT(*) FROM newsletter';
$res_count = mysql_query($sql_count_indirizzi, $conn)
or die(mysql_error());
// controllo se il numero di indirizzi è maggiore del numero di
// indirizzi per blocco
$numero_iscritti_tmp = mysql_fetch_row($res_count);
$numero_iscritti = $numero_iscritti_tmp[0];
if($numero_iscritti>$fdd){
// divido il numero di iscritti totali per il numero di blocchi desiderato
$n_blocchi = ($numero_iscritti/$fdd);
// arrotondo il risultato ad un intero
if(is_float($n_blocchi))
$n_blocchi = (int)$n_blocchi+1;
else
$n_blocchi = (int)$n_blocchi;
}
else
$n_blocchi = 1;
// per ogni blocco effettuo una query chiedendo un preciso range
// di indirizzi
for($i = 0; $i < $n_blocchi; $i++){
// controllo se il blocco è il primo (parte da 0) o uno dei
// successivi
if(($i+1) <= $n_blocchi){
// selezioni il range di record da mostrare
$da = ($fdd * $i);
$limit = ' LIMIT '.$da.', '.$fdd;
}
else
$limit = ' LIMIT 0, '.$fdd;
// eseguo la query che restituisce il blocco di indirizzi interessato
$sql_blocco_indirizzi = 'SELECT email FROM newsletter '.$limit;
$res_blocco = mysql_query($sql_blocco_indirizzi, $conn)
or die(header('Location: '.$_SERVER['PHP_SELF']));
$numero = mysql_num_rows($res_blocco);
while($numero>0){
echo '<span style="display: none"> </span>';
--$numero;
$val = mysql_fetch_row($res_blocco);
$message =& new Swift_Message($_POST['oggetto'], $testo, "text/html");
if (!($swift->send($message, trim($val[0]), "
[email protected]"))){
echo "Si è verificato un errore durante l'invio dell'indirizzo ".$val[0];
exit();
}
else
echo $val[0].' fatto!<br />';
}
}
//$swift->disconnect();
//header('Location: esito.php?confirm=newsletter');
##########################################
ob_end_clean();
ob_flush();
flush();
echo '<meta http-equiv="refresh" content="0;URL=esito.php?confirm=newsletter">';
echo '<div>';
echo '<table class="list" style="font-size: small">';
echo '<tr><td colspan="2">';
echo '<div class="conferma" style="font-size: small" id="esito">L\'invio è stato effettuato con successo!</div>';
echo '<br />';
$op= 'gestisci_email.php';
echo '<div>';
echo '<a href="'.$op.'">« TORNA ALLA LISTA DELLE E-MAIL</a>';
echo '</div>';
echo '</td></tr>';
echo '</table>';
echo '</div>';
// includo la coda
require 'coda.php';
?>