Salve
ho uno script che invia newsletter agli utenti registrati al sito, pero' noto che essendo circa 3000 dopo un po' va in time out e quindi non spedisce le email.
Queste email le invio da locale tramite smtp e non con la funzione mail()
Qualcuno saprebbe dirmi come fare per non fare andare in time out il tutto?
Questo e' quello che utilizzo ora:
Codice PHP:
<?php
set_time_limit(0);
require("class.phpmailer.php");
$messaggio = stripslashes($messaggio);
$host = "";
$db_nome = "";
$db_user = "";
$db_pass = "";
$nome_tabella = "email";
$connessione = @mysql_connect("$host","$db_user","$db_pass")
or die("Impossibile stabilire una connessione locale.");
$db = @mysql_select_db($db_nome, $connessione)
or die("Impossibile selezionare il database.");
$sql = "select * from $nome_tabella order by id asc";
$risultato = @mysql_query($sql,$connessione)
or die("Impossibile eseguire l'interrogazione.");
while ($riga = mysql_fetch_assoc($risultato)) {
$id = $riga['id'];
$email = $riga['email'];
//PORTO I CAMPI DELLE VARIABILI DALLA PAGINA DEL MODULO A QUESTA CHE LI INVIA TRAMITE EMAIL
$oggetto=$_POST['oggetto'];
$messaggio=$_POST['messaggio'];
$allegato=$_POST['allegato'];
$mail = new PHPMailer();
$mail->From = "info@miosito.it"; // indirizzo di provenienza
$mail->FromName = "Mio Nome"; // nome utente
$mail->Subject = "$oggetto"; // Preparo l'oggetto dell'email prendendolo dal campo $oggetto
$mail->Host = "smtp.aruba.it"; // server smtp
$mail->Mailer = "smtp"; // dice a php mailer di usare smtp invece della funzione mail
//SCRIVO IL MESSAGGIO CHE DEVE COMPARIRE NELLA EMAIL
$messaggio="<html><body>$messaggio</body></html>";
// AGGIUNGO LA VARIABILE MESSAGGIO A CHI POTRA' LEGGERE LE EMAIL IN HTML
$body = "$messaggio";
// AGGIUNGO LA VARIABILE MESSAGGIO PER CHI NON POTRA' LEGGERE LE EMAIL IN HTML
$text_body = "$messaggio";
$mail->Body = $body;
$mail->AltBody = $text_body;
$mail->AddAddress("$email");
if(!$mail->Send())
echo "ERRORE NELL INVIO DELLA EMAIL";
// Pulizia per eventuali altri invii successivi
$mail->ClearAddresses();
$mail->ClearAttachments();
}
?>
Vorrei inoltre far si che ad ogni invio mi compaia a video l'indirizzo dell'email a cui e' stato inviata l'email mentre ora mi esce solo alla fine, quando ho inviato il tutto