Cancellazione da Newsletter

Per dare l'opportunità agli utenti di cancellarsi dalla newsletter, ad ogni invio allego il codice sottoriportato. Purtroppo ad ogni utente invio la possibilità di cancellazione tutte le mail degli iscritti, mi spiego meglio la mail contiene tante volte la dicitura"Se intendi cancellarti da questa Newsletter clicca qui" quanti sono gl'iscritti.

Qualcuno può aiutermi a risolvere il problema in modo da inviare, nelle newslwtter, solo il riferimento alla propria mail?

grazie giovanni

while ($myrow=mysql_fetch_row($result)) {
    $dest=$myrow[3]; // contiene la mail del destinatario
    $i++;
    $hash_utente=md5($dest.$hash);  
    $messaggio.= " <br /><br /><br /> Se intendi cancellarti da questa Newsletter clicca 
<a href=http://www.bongi.eu/tvs/start.php?pagina=15&conf=3&iscritto=".$hash_utente.">qui</a>";
    mail($dest,$oggetto,$messaggio,$intestazioni);
   //echo "iiiiiiiii".$myrow[0];
   $dest="";
   $hash_utente="";
  }
inviato 10 anni fa
bonann23
X 0 X

Perché hai messo quel codice all'interno di un ciclo while? Non c'è motivo per ripetere il messaggio di cancellazione più volte all'interno di una stessa mail.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ho messo il codice all'interno del "WHILE" per catturare l'HASH dell' utente a cui sto inviando la mail, altrimenti non saprei come fare ad indirizzare l'utente verso la pagina e quindi la query di delete ad hoc.

giovanni

risposto 10 anni fa
bonann23
X 0 X

ho messo il codice all'interno del "WHILE" per catturare l'HASH dell' utente a cui sto inviando la mail, altrimenti non saprei come fare ad indirizzare l'utente verso la pagina e quindi la query di delete ad hoc.

giovanni

non credo sia un buon motivo... anzi è la causa del tuo problema!

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Purtroppo nono riesco a sistemare il problema.

Ho cambiato il codice mettendo $messaggio.= " <br /><br /><br /> Se intendi cancellarti da questa Newsletter clicca <a href=http://www.bongi.eu/tvs/start.php?pagina=15&conf=3&iscritto=".$hash_utente.">qui</a>";

fuori dal ciclo WHILE.

Quindi nelle mail inviate la dicitura "Se intendi cancellarti da questa Newsletter clicca qui "compare solo una volta ma il collegamento non è presente il riferimento univoco dell' hash quindi il link si presenta così :

http://omissis-http%3A//www.xxxxxi.xx/xxx/start.php%3Fpagina%3D15%26conf%3D3%26iscritto%3D, con il riferimento all'hash utente vuoto.

Non riesco a capire come devo risolvere il problema, inoltre, visto che la causa del problema è l'inserimento del codice all'interno del cicli WHILE  non riesco a capire come dovrei catturare l'hash.

grazie giovanni

risposto 10 anni fa
bonann23
X 0 X

un ciclo WHILE non serve di per sè a recuperare un hash ma si limita a ripetere un gruppo di istruzioni.

Quindi individua le istruzioni all'interno di tale ciclo che si occupano di creare questo dato ed utilizzale una sola volta!

Se questo script ha il compito di inviare una newsletter allora dovrebbe già esistere un ciclo che ripete l'invio delle email per tutti gli utenti iscritti.

Se proprio non risolvi riporta il codice per intero, evitando le parti che ritieni ininfluenti.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Allora credo che il codice da valutare sia il seguente.

while ($myrow=mysql_fetch_row($result)) {
    $dest=$myrow[3]; // contiene la mail del destinatario
    $i++;
    $hash_utente=md5($dest.$hash);  
    $messaggio.= " <br /><br /><br /> Se intendi cancellarti da questa Newsletter clicca 
<a href=http://www.xxxx.xx/xxx/start.php?pagina=15&conf=3&iscritto=".$hash_utente.">qui</a>";
    mail($dest,$oggetto,$messaggio,$intestazioni);
   $dest="";
   $hash_utente="";
  }

Infatti da una query, che non riporto perche ininfluente, catturo la mail ($myrow[3])); poi all'interno del ciclo while, incriminato!!!!, compongo la variabile $hash_utente, ottenuta aggiungendo alla variabile ($myrow[3])) il valore costante, o comunque personalizzato per ogni utente ($hash) da questa operazione ottengo: md5($dest.$hash), che naturalmente dovrà variare per ogni mail inviata.

Davvero non riesco a capire come non iserire nel ciclo while quanto esposto.

grazie per la pazienza

giovanni

risposto 10 anni fa
bonann23
X 0 X

Eccome se è influente la query! Riporta il codice che va dalla query al ciclo while.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
$file="../newsletters/".$id.".inc";
   if (file_exists($file)) {
      $filename="../newsletters/".$id.".inc";
      $fd=fopen($filename,"r");
      $messaggio=fread($fd,filesize($filename));
      
     $mysql="SELECT * FROM tsend_newsletter WHERE idposizione_iscritto=2";
 // echo $mysql;
     $result = mysql_query($mysql,$db) or die($QueryErrore);

        $hash ="abcdefg";
        $intestazioni  = "MIME-Version: 1.0\r\n";
        $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
      $intestazioni .="From:webmaster@sito.it\r\nReply To:webmaster@sito.it";
 
           $i=0;
              while ($myrow=mysql_fetch_row($result)) {
                $dest=$myrow[3];//$dest contiene il destinatario
                $i++;
                $hash_utente=md5($dest.$hash);  
                $messaggio.= " <br /><br /><br /> Se intendi cancellarti da questa Newsletter clicca 
                  <a href=http://www.xxx.xx/xx/start.php?pagina=15&conf=3&iscritto=".$hash_utente.">qui</a>";
                mail($dest,$oggetto,$messaggio,$intestazioni);
                 $dest="";
                  $hash_utente="";
              }
 
        echo "<h2>Sono state inviate $i email</h2><br>";
risposto 10 anni fa
bonann23
X 0 X

Dimentica tutto quello che ho detto prima, l'errore era un'altro. Così dovrebbe funzionare.

$file="../newsletters/".$id.".inc";
   if (file_exists($file)) {
      $filename="../newsletters/".$id.".inc";
      $fd=fopen($filename,"r");
      $messaggio=fread($fd,filesize($filename));
      
     $mysql="SELECT * FROM tsend_newsletter WHERE idposizione_iscritto=2";
 // echo $mysql;
     $result = mysql_query($mysql,$db) or die($QueryErrore);

        $hash ="abcdefg";
        $intestazioni  = "MIME-Version: 1.0\r\n";
        $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
      $intestazioni .="From:webmaster@sito.it\r\nReply To:webmaster@sito.it";
 
           $i=0;
              while ($myrow=mysql_fetch_row($result)) {
                $dest=$myrow[3];//$dest contiene il destinatario
                $i++;
                $hash_utente=md5($dest.$hash);  
                $link = " <br /><br /><br /> Se intendi cancellarti da questa Newsletter clicca 
                  <a href=http://www.xxx.xx/xx/start.php?pagina=15&conf=3&iscritto=".$hash_utente.">qui</a>";
                mail($dest,$oggetto,$messaggio.$link,$intestazioni);
                 $dest="";
                  $hash_utente="";
              }
 
        echo "<h2>Sono state inviate $i email</h2><br>";
risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie giovanni

risposto 10 anni fa
bonann23
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda