Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Errore nel while per invio email multiple

    Buon pomeriggio.
    Vorrei creare una newsletters anche attraverso l'utilizzo di phpmailer.
    Ho una tabella dove ho delle notizie ed una dove risiedono gli indirizzi dove inviare le mail.
    Codice PHP:
    //step
    //prima eseguo la query per prendere la notizia
    //faccio dei controlli se è tutto ok
    //eseguo la query per prendere gli indirizzi che hanno aderito a ricevere la news
    //"SELECT distinct(Email) FROM TBEMAILNEWSLETTER WHERE newsletter=1"

    if (mysql_num_rows($sqlUser) > 0) {       while ($row mysql_fetch_row($sqlUser)){                 $_SESSION['user'] = $row[0];
                     
    //if (!mail($row[0],$cTitolo,$cTesto,"From:sito") {->gmail non riceve con questo metodo
                     
    include '../../phpmailer/phpmailer-newsletter.php';//cosi mi invia soltanto al 1° indirizzo
           
    }

    Dove sbaglio?
    Grazie.

  2. #2
    così cerchi di includere quel file ad ogni ciclo.
    invece dovresti richiamare il metodo AddAddress (o AddBCC) di phpmailer, ad ogni ciclo:
    Codice PHP:
    foreach ($query as $c) {
          
    $email->AddAddress($c['cliente_email']);

    e poi invii l'email.

  3. #3
    ok risolto, ti ringrazio.
    Alla prossima.

  4. #4
    non ci siamo, l'invio per tutte le email presenti nel DB lo esegue.
    Tutti ricevono la newsletter, ma in chiaro vedo l'indirizzo di tutti, invece di vedere soltanto il mio.
    Faccio in questo modo:
    Codice PHP:
    $sqlUser  mysql_query("SELECT * FROM ".$DB.".TB_UTENTI WHERE (Email<>'' OR Email<>NULL) AND newsletter=1");           
     if (
    mysql_num_rows($sqlUser) > 0) {                   
    while (
    $row mysql_fetch_array($sqlUser)){                    
    $global_vars = array('mail_to' => $row['Email'], 'mail_cc' => '','mail_bcc' => '');                    
    $this->SetAddress($global_vars["mail_to"], $row['Email']);                
    }            

    Come risolvo?
    Grazie mille.

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    spedisci la email prima di uscire dal while, subito dopo SetAddress

  6. #6
    fatto cosi:
    Codice PHP:
    while ($rsUser mysql_fetch_array($sqlUser)){                    
    $_SESSION['IdUserEsterno'] = $rsUser['IdUserEsterno'];                    
    $global_vars = array('mail_to' => $rsUser['Email'], 'mail_cc' => '','mail_bcc' => '');                    
    $this->SetAddress($global_vars["mail_to"], $rsUser['Email']);                    
    if(!
    $this->Mail->Send()){                        
    //echo "ERROR";                    
    }                    
    else{                        
    //echo "Mail sent";                    
    }                

    ma, ricevo 3 email. La prima con un solo indirizzo, la seconda con due indirizzi e la terza con 3 indirizzi.
    Dove sbaglio?

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    posta un po' il codice completo, che a spizzichi non si capisce nulla
    in ogni caso, una volta entrato nel while istanzierei la classe di PHPMailer, genererei completamente l'email e la spedirei

  8. #8
    non tutto il codice è lunghissimo:
    Codice PHP:
    include("../phpmailer/phpunit.php");
    require(
    "../phpmailer/class.phpmailer.php");
    error_reporting(E_ALL);
    class 
    phpmailerTest extends TestCase{
    function 
    phpmailerTest($name) {        
    /* must define this constructor */        
    $this->TestCase$name );    
    }
    function 
    setUp() {
    $this->Mail = new PHPMailer();
    $this->Mail->Priority 3;
    //e molto altro
    }
    function 
    BuildBody() {        
    $this->CheckChanges();                
    // Determine line endings for message                
    if($this->Mail->ContentType == "text/html" || strlen($this->Mail->AltBody) > 0)        {            
    $eol "<br/>";            
    $bullet "<li>";           
    $bullet_start "<ul>";            
    $bullet_end "</ul>";        
    }        
    else {            
    $eol "\n";            
    $bullet " - ";            
    $bullet_start "";            
    $bullet_end "";       
    }                
    $ReportBody "";            
    }
    function 
    SetAddress($sAddress$sName ""$sType "to") {        
    switch(
    $sType)        {            
    case 
    "to":                
    $this->Mail->AddAddress($sAddress$sName);                
    break;            
    case 
    "cc":                
    $this->Mail->AddCC($sAddress$sName);                
    break;            
    case 
    "bcc":                
    $this->Mail->AddBCC($sAddress$sName);               
     break;        
    }   
     }

    function 
    test_Html() {
    global 
    $global_vars;
    $this->Mail->IsHTML(true);
    $this->Mail->Body .= "Body della newsletter";
    $this->Mail->IsHTML(true);
    $this->BuildBody();
    include 
    $_SERVER['DOCUMENT_ROOT']."/inc/connect.php";

    $sqlMaxmysql_query("SELECT * FROM ".$DB.".TB_SALUTE WHERE id=".$_SESSION['id']."");
    $rsMax mysql_fetch_array($sqlMax) or die ("La query non &egrave; stata eseguita!" mysql_error());
    if (
    mysql_num_rows($sqlMax) == 1) {
    $_SESSION['DtInizioValidita'] = $rsMax['DtInizioValidita'];
    $_SESSION['struttura']     = $rsMax['struttura'];
    $_SESSION['tipologia']     = $rsMax['tipologia'];
    $_SESSION['descrizione']= $rsMax['descrizione'];
    $_SESSION['PhImg']        = $rsMax['PhImg'];
    $_SESSION['sito']        = $rsMax['sito'];
    $_SESSION['email']        = $rsMax['email'];
    $_SESSION['sconto']        = $rsMax['sconto'];
    $sqlUser  mysql_query("SELECT * FROM ".$DB.".TB_UTENTI WHERE (Email<>'' OR Email<>NULL) AND newsletter=1");            
    if (
    mysql_num_rows($sqlUser) > 0) {
    while (
    $rsUser mysql_fetch_array($sqlUser)){
    $_SESSION['IdUserEsterno'] = $rsUser['IdUserEsterno'];
    $global_vars = array('mail_to' => $rsUser['Email'], 'mail_cc' => '','mail_bcc' => '');
    $this->SetAddress($global_vars["mail_to"], $rsUser['Email']);
    if(!
    $this->Mail->Send()){
    //echo "ERROR";
    }else{
    //echo "Mail sent";
    }
    }
    }
    }

    Questo è tutto.
    Grazie mille.
    Ultima modifica di ANTAGONIA; 22-08-2017 a 15:58

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Per quello che riesco a capire dal codice, nella funzione test_Html sposta
    Codice PHP:
    $this->Mail->IsHTML(true);
    $this->Mail->Body .= "Body della newsletter";
    $this->Mail->IsHTML(true);
    $this->BuildBody(); 
    all'interno del while dove scorri il risultato della query​

  10. #10
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000
    C'è due volte $this->Mail->IsHTML(true);
    Uno levalo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.