Invio Newsletter

  • Creatore Discussione Creatore Discussione helpdesk
  • Data di inizio Data di inizio

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Salve ragazzi sto tentando di creare una Newsletter ma non capisco come fare per inviare a tutti gli sicritti il messaggio. Ho pensato di creare uina query di select per poi fare l'implode e inviarle ma credo manchi un ciclo while per navigare l'array.

<?PHP

$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dbname = 'dbname';

$sql = mysql_query("SELECT email FROM iscrittiNewsletter";
$riga = mysql_fetch_array($sql);

$dati[]= $riga['mail'];

echo "Dati=".implode(",",$dati);

if (mysql_query($query, $connessione)){

$risposta='Dati scritti';
echo "risposta=".$risposta;

$to = $Mail;
$subject = "Newsletter inviata da:";
$MAIL="\n E.mail :";
$server="sito server";
$messaggio = $messaggio;
$messaggio .= "Le ricordiamo che se desidera cancellare il suo nominativo dalla nostra banca dati potra' effettuare tale operazione al seguente link: www.sito.it/cn.php";
$messaggio .= "\n\n-------------------------------------\n";
$messaggio .= "\n E.mail inviata da: www.sito.it
$MAIL $dati ";
$headers = "From: ".$server ." <" .$Mail.">\n";

if(@mail($to, $subject, $messaggio, $headers)){
echo "answer=ok";
}else{
echo "answer=error";
}

}else{

$risposta2='dati non scritti';
echo "risposta=".$risposta2;

}

mysql_close($connessione);

?>
 
Ultima modifica:
ciao
immagino che tu abbia una tabella iscritti in cui c'è il campo email

per cui fai una query (ti scrivo il codice brutalmente)

PHP:
<?php
//...........
$query=mysql_query("SELECT email FROM iscritti");
while($row=mysql_fetch_array($query)){
	$to=$row['email'];
	if(@mail($to, $subject, $messaggio, $headers)){ 
		echo "answer=ok"; 
	}else{ 
		echo "answer=error"; 
	} 
}
//...........
?>
però stai attento a quante email invii una dietro l'altra per non intasare il server
 
Grazie mille Borgo sempre gentile!
Ascolta mi consigli di inserire un controllo e far inviare un numero di tot mail al giorno
e superato quello dargli l'invio automatico il giorno seguente ad una tot ora?
oppure e' troppo complicato e anche stupido come discorso poiche' basta semplicemente dare un numero massimo di invii?
 
Ultima modifica:
ciao
io faccio così
nella tabella iscritti ho il campi data_invio in timestamp
prima di inviare leggo la data attuale (sempre in timestamp)
tolgo all'attuale un mese data_attuale_corretta=time()-(30*24*60*60);
nella select estraggo solo gli indirizzi con data_invio < data_attuale_corretta e metto un limit 100.
nel ciclo while, se l'email è inviata, uppo la data di invio con la data_attuale (non quella corretta)
nel cliclo while metto anche sleep(1) (attesa di 1 sec tra un invio e l'altro)
http://fi.php.net/manual/en/function.sleep.php
in modo da non intasare il server

p.s.
la prima vaolta che inserisco un nuovo iscritto setto la data_invio a un anno fa'
 

Discussioni simili