consigli per inviare newsletter

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, volevo sapere per fare uno script che mi mandi email a tante persone.

io uso phpmailer :

e la uso cosi:

PHP:
                         $messaggio = new PHPMailer;
				$messaggio->IsHTML(true);
					
				$messaggio->From   = $mail_webmaster;
				$messaggio->FromName = "Amministratore";
				$messaggio->AddAddress($db_mail); 
				$messaggio->Body = $body;
				$messaggio->Subject = $oggetto_email;
				
				if(!$messaggio->Send()) {
					$error =  "errore nella spedizione: ".$messaggio->ErrorInfo;
				} else {
					$msg = 'messaggio inviato, aspetta 2 secondi';
					redirect("index.php",2);
				}

ora questo codice mi seriva per l'invio della password dimenticata.

come posso modificarlo per inviare l'email per far la newsletter?

io uso questi campi:
PHP:
   CREATE TABLE `utenti_newsletter` (
  `id` bigint(8) unsigned auto_increment,
  `fullname` varchar(255),
  `email` varchar(255) UNIQUE,
  `browser` varchar(255),
  `ip` varchar(255),
  `activationHash` varchar(255) ,
  `send` int  default '0',
  `active` int ,
  `_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)) ENGINE = MyISAM;

ho messo send 0, e protei aggiornarlo quando invio le email ed mettere un limit alla query?

secondo voi funzionerebbe?

grazie mille e buona giornata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok, questo è il mio brutissimo codice che sto faccendo.
Ma non so come ricavare il body e il titolo delle newsletter che la tutto il contenuto sta nella tabella newsletter:

PHP:
  <?php
require_once(dirname(__FILE__) . '/inc.php');
require_once(dirname(__FILE__) . '/admin_mod.php');
$page = new Page;
$page->setTitle('Send Newsletter');
$page->startBody();
?>
<?php
$id_newsletter = (isset($_POST["id_newsletter"])) ? trim ($_POST["id_newsletter"]): '';

    if (isset($_POST["submit"]))
    {
            
    
            $getUser =$db->query('SELECT * FROM utenti_newsletter')or die($db->error);
            
            
        while($row = $result->fetch_array())
        {
                $messaggio = new PHPMailer;
                $messaggio->IsHTML(true);
                    
                $messaggio->From   = $mail_webmaster;
                $messaggio->FromName = "Amministratore";
                $messaggio->AddAddress($row["email"]); 
                $messaggio->Body = $body;
                $messaggio->Subject = $oggetto_email;
                
                if(!$messaggio->Send()) {
                    $error =  "errore nella spedizione: ".$messaggio->ErrorInfo;
                } else {
                    $query = $db->query("UPDATE utenti_newsletter SET send=1 WHERE `mail`='".$row['email']."'") or die($db->error);    
                    $msg = "Invio newsletter inviata";
                }
        }
        
        
       
    }
?>

<p class="title2">Invia newsletter</p>
<?php    if ( isset ( $error ) )    { echo '            <p class="error">' . $error . '</p>' . "\n";    }    ?>
<?php    if ( isset ( $msg ) )    { echo '            <p class="msg">' . $msg . '</p>' . "\n";    } else {?>


    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
            <table align="center" >
            <tr>
      <td>Seleziona Newsletter</td>
      <td><?php echo "<select  name=\"id_newsletter\">";?>

        <option  selected="selected" value="0">Seleziona</option>
        <?php
    $result = $db->query("SELECT * FROM newsletter");
    
    while($row = $result->fetch_array())
    {
    $titolo= $row['titolo'];
    $id = $row['id'];
  ?>
    <option value="<?php echo $id; ?>"<?php if($id_newsletter=="".$id."") echo ' selected'?> ><?php echo $row["titolo"]; ?></option>
           <?php
  }
?>
      </select></td>
    </tr>
<tr>
                  <tr>
                    <td><input type="submit" name="submit" value="Invia newsletter" /></td>
                  </tr>
            </tr>
        </table>
    </form>
    
<?php }

non lo provato .. ditemi come posso recuperare i dati dall'altra tabella.
vi ringrazio molto.
buona serata.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male vuoi fare un invio di newsletters. giusto?
questo è uno schema di come avevo fatto una volta
PHP:
<?php
//.......
$messaggio = new PHPMailer;
$messaggio->IsHTML(true);
$messaggio->From   = $mail_webmaster;
$messaggio->FromName = "Amministratore";
$messaggio->Body = $body;
$messaggio->Subject = $oggetto_email;
//massimo 50 email alla volta, non ti conviene superare 50 al gg altrimenti rischi di entrare in qualche balcklist
//e invio agli indirizzi ancora non inviati send = 0
$query=mysql_query("SELECT email FROM utenti_newsletter WHERE send='0' ORDER BY fullname LIMIT 50");
if(mysql_num_rows($query) > 0){
	while($riga=mysql_fetch_array($query)){
		$db_mail=$riga['email'];
		$messaggio->AddAddress($db_mail);                
		if(!$messaggio->Send()) {
			$error =  "errore nella spedizione: ".$messaggio->ErrorInfo;//vedi p.s.
		} else {
			echo "messaggio inviato a $db_mail<br />";
			//uppo send a inviato send = 1
			$uppa="UPDATE utenti_newsletter SET send='1' WHERE email='$db_mail'";
		}
		//ripulisci l'indirizzo per evitare invii multipli
		$messaggio->ClearAddresses();
		$messaggio->ClearAllRecipients();
		//ti conviene attendere tra un invio e l'altro per non intasare il server
		usleep(50);// mezzo secondo tra un invio e l'altro
	}
}else{
	echo "hai inviato tutto l'elenco: raggiorna send o non ci sono indirizzi";
}
//........
?>

p.s.
qui non l'ho messo, ma in caso di errore di trasmissione inserivo l'indirizzo che aveva dato l'errore in una tabella apposita per poi verificarlo ed eventualmente toglierlo dal db o correggerlo
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok, ci sono:
ora l'unico messaggio di errore che ricevo è questo:

Notice: Undefined index: email in D:\xampp\htdocs\xxx\admin\newsletter_send.php on line 25
Invalid address: You must provide at least one recipient email address.

ti posto il codice:
PHP:
 <?php
require_once(dirname(__FILE__) . '/inc.php');
require_once(dirname(__FILE__) . '/admin_mod.php');
$page = new Page;
$page->setTitle('Send Newsletter');
$page->startBody();
?>
<?php
$id_newsletter = (isset($_POST["id_newsletter"])) ? trim ($_POST["id_newsletter"]): '';

    if (isset($_POST["submit"]))
    {
            
    
            $result =$db->query('SELECT newsletter.text as _body , newsletter.titolo as _titolo , newsletter.* FROM utenti_newsletter INNER JOIN newsletter')or die($db->error);
            
            
        while($row = $result->fetch_array())
        {
                $messaggio = new PHPMailer;
                $messaggio->IsHTML(true);
                    
                $messaggio->From   = $mail_webmaster;
                $messaggio->FromName = "Amministratore";
                $messaggio->AddAddress($row["email"]); 
                $messaggio->Body = $row["_body"];
                $messaggio->Subject = $row["_titolo"];
                
                if(!$messaggio->Send()) {
                    $error =  "errore nella spedizione: ".$messaggio->ErrorInfo;
                } else {
                    $query = $db->query("UPDATE utenti_newsletter SET send=1 WHERE `email`='".$row['email']."'") or die($db->error);    
                    $msg = "Invio newsletter inviata";
                }
        }
        
        
       
    }
?>

<p class="title2">Invia newsletter</p>
<?php    if ( isset ( $error ) )    { echo '            <p class="error">' . $error . '</p>' . "\n";    }    ?>
<?php    if ( isset ( $msg ) )    { echo '            <p class="msg">' . $msg . '</p>' . "\n";    } else {?>


    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
            <table align="center" >
            <tr>
      <td>Seleziona Newsletter</td>
      <td><?php echo "<select  name=\"id_newsletter\">";?>

        <option  selected="selected" value="0">Seleziona</option>
        <?php
    $result = $db->query("SELECT * FROM newsletter");
    
    while($row = $result->fetch_array())
    {
    $titolo= $row['titolo'];
    $id = $row['id'];
  ?>
    <option value="<?php echo $id; ?>"<?php if($id_newsletter=="".$id."") echo ' selected'?> ><?php echo $row["titolo"]; ?></option>
           <?php
  }
?>
      </select></td>
    </tr>
<tr>
                  <tr>
                    <td><input type="submit" name="submit" value="Invia newsletter" /></td>
                  </tr>
            </tr>
        </table>
    </form>
    
<?php } 

?>
<?php
$page->endBody();
echo $page->render('layout/template.php');
?>

mi sa che mi sono dimenticato come fare la inner join.
idee?

grazie mille e buona serata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
cosi come predento idea dal tuo codice non mi funziona:
ansi non fa nessuna azione:

ecco il codice:
PHP:
 <?php
require_once(dirname(__FILE__) . '/inc.php');
require_once(dirname(__FILE__) . '/admin_mod.php');
$page = new Page;
$page->setTitle('Send Newsletter');
$page->startBody();
?>
<?php
$id_newsletter = (isset($_POST["id_newsletter"])) ? trim ($_POST["id_newsletter"]): '';

    if (isset($_POST["submit"]))
    {
            
    
       $result =$db->query('SELECT newsletter.*, utenti_newsletter.*, newsletter.text as _body , newsletter.titolo as _titolo , newsletter.* FROM utenti_newsletter INNER JOIN newsletter WHERE active=1 and send=0')or die($db->error);
            
	if ($result->num_rows==1) 
	{
            
        while($row = $result->fetch_array())
        {
                $messaggio = new PHPMailer;
                $messaggio->IsHTML(true);
                    
                $messaggio->From   = $mail_webmaster;
                $messaggio->FromName = "Amministratore";
                $messaggio->AddAddress($row["email"]); 
                $messaggio->Body = $row["_body"];
                $messaggio->Subject = $row["_titolo"];
                
                if(!$messaggio->Send()) {
                    $error =  "errore nella spedizione: ".$messaggio->ErrorInfo;
                } else {
                    $query = $db->query("UPDATE utenti_newsletter SET send=1 WHERE `email`='".$row['email']."'") or die($db->error);    
                    $msg = "Invio newsletter inviata";
                }
        }
        
     }else
	 {
	     $result =$db->query('SELECT * from  utenti_newsletter')or die($db->error);
			while($row = $result->fetch_array())
			{
				$query = $db->query("UPDATE utenti_newsletter SET send=0 WHERE `email`='".$row['email']."'") or die($db->error); 
				$msg = "fatto";
			}
	 }	 
  }
?>

<p class="title2">Invia newsletter</p>
<?php    if ( isset ( $error ) )    { echo '            <p class="error">' . $error . '</p>' . "\n";    }    ?>
<?php    if ( isset ( $msg ) )    { echo '            <p class="msg">' . $msg . '</p>' . "\n";    } else {?>


    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
            <table align="center" >
            <tr>
      <td>Seleziona Newsletter</td>
      <td><?php echo "<select  name=\"id_newsletter\">";?>

        <option  selected="selected" value="0">Seleziona</option>
        <?php
    $result = $db->query("SELECT * FROM newsletter");
    
    while($row = $result->fetch_array())
    {
    $titolo= $row['titolo'];
    $id = $row['id'];
  ?>
    <option value="<?php echo $id; ?>"<?php if($id_newsletter=="".$id."") echo ' selected'?> ><?php echo $row["titolo"]; ?></option>
           <?php
  }
?>
      </select></td>
    </tr>
<tr>
                  <tr>
                    <td><input type="submit" name="submit" value="Invia newsletter" /></td>
                  </tr>
            </tr>
        </table>
    </form>
    
<?php } 

?>
<?php
$page->endBody();
echo $page->render('layout/template.php');
?>

mi vedi il perché

grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ok, ma ti ricordo: attento a quante email invii al giorno, io non ci avevo pensato e sono finito, allora, in una blakclist e per un mese non ho potuto più inviare (anzi inviava, ma le email venivano bloccate)
poi ti conviene mettere tra un invio e l'altro una pausa (il mezzo secondo basta così almeno è la mia esperienza)
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao
ok, ma ti ricordo: attento a quante email invii al giorno, io non ci avevo pensato e sono finito, allora, in una blakclist e per un mese non ho potuto più inviare (anzi inviava, ma le email venivano bloccate)
poi ti conviene mettere tra un invio e l'altro una pausa (il mezzo secondo basta così almeno è la mia esperienza)

ok , apena mia zia mi fa la creazione dell'email newsletter@......
uso anche l'smtp visto che nel suo servizio si puo usare.

ti ringrazio molto e buona serata.
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Consigli per hosting reseller Hosting 0
N Consigli SEO per il mio sito di web design SEO e Posizionamento 0
G Consigli SEO per scrittura e struttura pagine SEO e Posizionamento 7
P [Photoshop] Consigli per logo dimensioni minime Photoshop 1
B [WordPress] Consigli per sito b&b WordPress 1
Seeride Consigli per ripetitore wifi? Reti LAN e Wireless 2
S Consigli per invio di comunicati stampa Discussioni Varie 2
E [Photoshop] consigli per stampa puzzle personalizzato Photoshop 0
N [Photoshop] Tavoletta Grafica XP-Pen O Wacom : Consigli per il primo Acquisto Photoshop 0
G consigli per nuovo sito Hosting 2
braccobaldo Hosting per nuovo sito WordPress: consigli? Hosting 6
B Consigli per libro su Python Programmazione 1
voldemort Consigli per Cloud Object Storage Cloud Computing e Cloud Server 1
P Consigli per sistemare meglio il menu HTML e CSS 63
D Suggerimenti e/o consigli per App personale gestione Rapporto Interventi Tecnici (RIT Sviluppo app per Android 0
zorro Consigli per indicizzazione nuovo sito (principiante) SEO e Posizionamento 3
K Supporto - consigli e chiarimenti per utilizzo transazioni ... PHP 6
G Consigli per sito multilingua in PHP PHP 1
S Consigli per script javascript per creare videogiochi Javascript 2
L Consigli su utilizzo framework per progetto PHP 4
novello88 Consigli per posizionamento nuovo blog SEO e Posizionamento 7
E consigli per piccola area riservata PHP 4
Sevenjeak Aiuto e consigli su adattamento sito per dispositivi mobile HTML e CSS 2
Umberto Conti Richiesta consigli e suggerimenti per ecommerce E-Commerce 5
Z Redirect 301 per restyling sito: dubbi e consigli SEO e Posizionamento 0
StarFish Consigli IDE Windows per C++ C/C++ 3
L [Java] Consigli progettuali per una semplice applicazione Java 6
M Consigli per Wordpress WordPress 20
L Consigli per un neofita: come impostereste un database simile a quello di facebook? MySQL 6
M consigli pagamenti per sito SEO e Posizionamento 1
M Consigli/Critiche su classe per la traduzione PHP 2
K Sito e commerce consigli per migliorarlo. SEO e Posizionamento 6
P Programma per estrarre email...consigli ! Email Marketing 0
M Consigli per sito da realizzare Joomla 0
S valutazione e consigli per questo sito www.lapiazzettadiale.it Presenta il tuo Sito 2
mkrapfen consigli per il mio sito-portfolio Javascript 0
R Consigli o suggerimenti per nome pagina interna: HTML e CSS 4
B Hosting per Joomla: consigli e domande varie Hosting 0
G script attivo di annunci ampliare motore di ricerca per regione o citta consigli PHP 4
D FrostGames : criiche,consigli,aiuto per migliorare! Presenta il tuo Sito 2
C consigli per il mio sito - lapalanca Presenta il tuo Sito 8
S Sito per WebMaster [WORK IN PROGRESS] - Consigli Utili Presenta il tuo Sito 0
puffobiondo Chiedeo consigli per il mio primo sito Discussioni Varie 6
L Consigli per una Newsletter HTML e CSS 3
R Consigli per il mio sito Presenta il tuo Sito 7
catellostefano consigli per nuovo Server Apache 2
P Consigli per pligg? CMS (Content Management System) 6
F Consigli per aggiornare un PC?? Hardware 0
F consigli per migliorare il sito web Presenta il tuo Sito 2
D Accetto consigli per.. Presenta il tuo Sito 2

Discussioni simili