-
Invio newsletter utenti.
Ciao a tutti,
vorrei fare una pagina che invia una e-mail ad ogni utente che ha nella colonna "campionato" per esempio il valore "ciccio".
La selezione degli utenti credo di averla fatta bene, ma non so come mandare l' email ad ogni utente.... come faccio?
Il sorgente è questo:
Codice PHP:
<?php
include('include/database_user_connection.php');
$campionato = $_GET['campionato'];
$sql = "SELECT email FROM utenti WHERE campionato = '".$campionato."'";
$query = mysql_query($sql) or die("errore nella query: ".mysql_error());
if($sql){
echo "E-Mail Inviata Correttamente.";
}else{
echo "Errore durante l'invio.";
}
?>
Grazie mille!
-
Basta che scorri in un ciclo i risultati della query e applichi la funzione mail.
Codice PHP:
<?php
include('include/database_user_connection.php');
$campionato = $_GET['campionato'];
$sql = "SELECT email FROM utenti WHERE campionato = '".$campionato."'";
$query = mysql_query($sql) or die("errore nella query: ".mysql_error());
$c = 0;
while($row = mysql_fetch_array($query))
if(!mail($row['email'], "titolo", "messaggio"))
$c++;
if($c > 0)
echo "Non è stato possibile inviare ".$c." email";
else
echo "Invio completato":
-
-
Aggiungo che c'è un limite di email ogni tanto di tempo.
Prova con la funzione sleep() :wink:
-
Si, ovviamente. Ero convinto di averlo scritto, l'ho pensato ma poi non l'ho più scritto. :|
Metti uno sleep all'interno di quel while.
-
Codice PHP:
<?php
include('include/database_user_connection.php');
$campionato = $_GET['campionato'];
$sql = "SELECT email FROM utenti WHERE campionato = '".$campionato."'";
$query = mysql_query($sql) or die("errore nella query: ".mysql_error());
$c = 0;
while($row = mysql_fetch_array($query))
sleep();
if(!mail($row['email'], "titolo", "messaggio"))
$c++;
if($c > 0)
echo "Non è stato possibile inviare ".$c." email";
else
echo "Invio completato":
va bene così?
-
No, è errato
Codice PHP:
<?php
include('include/database_user_connection.php');
$campionato = $_GET['campionato'];
$sql = "SELECT email FROM utenti WHERE campionato = '".$campionato."'";
$query = mysql_query($sql) or die("errore nella query: ".mysql_error());
$c = 0;
while($row = mysql_fetch_array($query)) {
sleep(1);
if(!mail($row['email'], "titolo", "messaggio"))
$c++;
}
if($c > 0)
echo "Non è stato possibile inviare ".$c." email";
else
echo "Invio completato":
-
Occhio che mi pare ci sia anche un limite di tempo di esecuzione della pagina!
(Dico questo perchè "ai tempi" l'avevo fatto anche io...avevo risolto mettendo il CC: nella e-mail :) )
-
Si lo so, ma questo dipende da quante sono le email da inviare. In alternativa si può usare usleep al posto di sleep e mettere un tempo sleep minore tra una email e l'altra.
-
Salve, io ho ancora problemi per la creazione della newsletter, un amico di altervista mi avevo fatto già (credo sia uno script, mi ha dato una cartella con vari file dentro, connessione, amministraz, ecc.. e io dovevo modificare i dati, poi li ha modificati lui stesso) una newsletter, ma ho cambiato i dati e non funziona più.