Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    Stampare correttamente array

    salve a tutti ragazzi volevo chiedervi aiuto per inviare mail col nominativo differente,
    ma quando faccio il foreach sull'array
    foreach ($indirizzi_nome as $indirizzo_nome)
    {
    $mail->Body .= "$indirizzo_nome";
    }
    mi stampa tutti i nomi dell'array
    come posso eliminare questo inconveniente?
    Codice PHP:
    if (($invia_a == "internal_id")) 
        {
            
    $query "SELECT * FROM utenti WHERE internal_id <> '".$a."' AND email <> '".$a."'";
            
    $result mysql_query($query) or die(mysql_error());
            if (
    mysql_num_rows($result) > 0
            {
                while (
    $utente mysql_fetch_assoc($result)) 
                {
                    
    $indirizzi[] = $utente["email"];
                    
    $indirizzi_nome[] = $utente["nome"];
                }
            }
            
    mysql_free_result($result);
        }
        if (
    $indirizzi
        {
       
            include(
    "class/phpmailer/class.phpmailer.php");
            
    $mail = new PHPMailer();
            
            
    $mail->IsHTML(true);
     
            
    $mail->SetFrom(MITTENTE_EMAILMITTENTE_NOME);
            
    $mail->Subject "Recupero password";
        
            
    //inseriamo i tag HTML e i CSS per formattare il messaggio
            
    $mail->Body .= '<html><body><head><style>';
            
    $mail->Body .= '.up{background-color:#FF0000;color:#000000;font-size:12px}';
            
    $mail->Body .= '.down{color:#FF0000;text-align:left;font-size:15px}';
            
    $mail->Body .= '</style></head>';
            
    $mail->Body .= '<table border="0" width="720" height="77">';
            
    $mail->Body .= '<tbody>';
            
    $mail->Body .= '<tr>';
        
            
    $mail->Body .= '<td width="33%">&nbsp;</td>';
            
    $mail->Body .= '<td width="33%"></td>';
            
    $mail->Body .= '</tr>';
            
    $mail->Body .= '</tbody>';
            
    $mail->Body .= '</table>';
            
    $mail->Body .= '<p>Gentile <strong><em>';
             foreach (
    $indirizzi_nome as $indirizzo_nome
                {
            
    $mail->Body .= "$indirizzo_nome";
             }
            
    $mail->Body .= '</em></strong></p>';
            
    $mail->Body .= '<p>&nbsp;</p>'
            
    $mail->Body .= '<p>Cordiali saluti.</p>';
            
    $mail->Body .= '</body></html>';    
            
            
    $mail->Mailer MAILER;
            
    $mail->Host SMTP;
            
    //$mail->Send();
                
    foreach ($indirizzi as $indirizzo
                {
                    
    $mail->AddAddress($indirizzo);
                    if (
    $mail->Send()) 
                    {
                        
    $num_ok++;
                    } 
                    else 
                    {
                        
    $num_ko++;
                    }
                    
    $mail->ClearAddresses();        
                }
            } 
    saluti

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    fa così perché il foreach è nella posizione sbagliata
    penso anche che tu debba risistemare il tuo codice e renderlo più efficiente

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    mi aiuti?

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    solo metodologicamente
    - cicla direttamente il recordset invece di creare due array distinti;
    - ad ogni ciclo compila il nome del destinatario e la sua email usando la notazione $utente['nome'] e $utente['email'] e invia la email;

    Provaci e se non trovi la quadra avvisa

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    scusa in che modo cicla direttamente il recordset invece di creare due array distinti;

    sono riuscita ad inviare 49 mail di esempio invece che 7 facendo il ciclo sui recordset...
    Ultima modifica di 84morena; 10-10-2014 a 12:50

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova un po', non ho testato
    Codice PHP:
    if (($invia_a == "internal_id")) 
        {
            
    $query "SELECT * FROM utenti WHERE internal_id <> '".$a."' AND email <> '".$a."'";
            
    $result mysql_query($query) or die(mysql_error());
            if (
    mysql_num_rows($result) > 0
            {
                include(
    "class/phpmailer/class.phpmailer.php");
                while (
    $utente mysql_fetch_assoc($result)) 
                {     
    // ciclo il recordset

                    
    $mail = new PHPMailer();
                    
                    
    $mail->IsHTML(true);
             
                    
    $mail->SetFrom(MITTENTE_EMAILMITTENTE_NOME);
                    
    $mail->Subject "Recupero password";
                
                    
    //inseriamo i tag HTML e i CSS per formattare il messaggio
                    
    $mail->Body .= '<html><body><head><style>';
                    
    $mail->Body .= '.up{background-color:#FF0000;color:#000000;font-size:12px}';
                    
    $mail->Body .= '.down{color:#FF0000;text-align:left;font-size:15px}';
                    
    $mail->Body .= '</style></head>';
                    
    $mail->Body .= '<table border="0" width="720" height="77">';
                    
    $mail->Body .= '<tbody>';
                    
    $mail->Body .= '<tr>';
                
                    
    $mail->Body .= '<td width="33%">&nbsp;</td>';
                    
    $mail->Body .= '<td width="33%"></td>';
                    
    $mail->Body .= '</tr>';
                    
    $mail->Body .= '</tbody>';
                    
    $mail->Body .= '</table>';
                    
    $mail->Body .= '<p>Gentile <strong><em>';
                    
    // elimino il foreach
                    
    $mail->Body .= $utente['nome'];
                    
                    
    $mail->Body .= '</em></strong></p>';
                    
    $mail->Body .= '<p>&nbsp;</p>'
                    
    $mail->Body .= '<p>Cordiali saluti.</p>';
                    
    $mail->Body .= '</body></html>';    
                    
                    
    $mail->Mailer MAILER;
                    
    $mail->Host SMTP;
                    
    //elimino il foreach
                    
    $mail->AddAddress($utente['email']);
                    if (
    $mail->Send()) 
                    {
                        
    $num_ok++;
                    } 
                    else 
                    {
                        
    $num_ko++;
                    }
                    
    $mail->ClearAddresses();        
                }
            }
        } 

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    perfetto...grazie mille.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    ti posso fare una domanda che esce un po fuori dalla discussione iniziale...invio le mail utilizzando la classe phpmailer, ma perchè non sempre arrivano?

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    non arrivano o finiscono nello spam? Ora non ricordo bene, ma mi pare che in PHPMailer ci sia un metodo per settare bene gli header, magari ne manca qualcuno che fa bloccare il messaggio dai filtri antispam (guarda anche la documentazione della classe)

    controlla se esiste una connessione tra tutte quelle che non arrivano

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    faccio dei controlli e ti faccio sapere...ma se tu conosci qualche documentazione è sempre ben accolta...saluti

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.