Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [phpmailer]contenuti diversi per account diversi

    Buon giorno, dovrei inserire un controllo che mi permetta con un'unico invio di inviare ad account diversi messaggi diversi.
    Ho questi due account: $uemail e $row['cal_email'], nel secondo voglio escludere l'invio della username e password.
    Codice PHP:
    function test_Html() {
        global 
    $global_vars;
        global 
    $row;
            global 
    $ulastname;
        global 
    $ufirstname;
        global 
    $uemail;
        global 
    $ucellulare;
        global 
    $utelnumber;
        global 
    $uaddress;
        global 
    $ucountry;
        global 
    $user;
        global 
    $upassword1;
            
    $this->Mail->IsHTML(true);
            
    $this->Mail->Body "<img alt=\"phpmailer\" src=\"cid:my-attach\" />
                                  

    .
                    
    "I dati per l'accesso al sito sono:\n
    "
    ;

            if(
    strlen($row['cal_email'])>0){
            
    $this->Mail->Body .=    "<div style='display:none'>Login:".$user."\n
    "
    .
            
    "Password: " $upassword1 "\n
    </div>"
    ;
        }
        elseif(
    strlen($uemail)>0){
            
    $this->Mail->Body .="<div style='display:yes'>Login:"$user."\n
    "
    .
            
    "Password: " $upassword1 "\n
    </div>"
    ;
        }
            
    $this->Mail->Body .=    "<hr/>".
            
    "Nominativo: " $ulastname " " $ufirstname "\n
    "
    ;
            
    $this->Mail->IsHTML(true);
            
            if(!
    $this->Mail->AddEmbeddedImage("phpmailer/logoAlto_ori.png""my-attach""phpmailer/logoAlto_ori.png","base64""image/png"))
            {
                
    $this->assert(false$this->Mail->ErrorInfo);
                return;
            }

            
    $this->BuildBody();
            
    $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);

    avrei potuto fare anche:
    Codice PHP:
    $this->Mail->Body .=    "<div style='display:".((strlen($row['cal_email'])>0) ? "none" "yes")."'>Login:".$user."\n
    "
    .
            
    "Password: " $upassword1 "\n
    </div>"

    Ma in tutte e due i casi non funziona.Che devo fare?
    Grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Esegui un po di codice di debug per capire cosa non ti fa naviagre correttamente l'albero condizionale :


    Codice PHP:

    echo "<pre>";

    echo 
    "primo controllo :\n" ;
    var_dumpstrlen($row['cal_email']) ) ;

    echo 
    "\n\nsecondo controllo : \n" ;
    var_dumpstrlen($uemail) ); 

    Resto in attesa del risultato ....

  3. #3
    grazie per avermi risposto....cmq il risultato è questo
    codice:
    primo controllo :int(20)
    
    secondo controllo : int(19)

    Ps: comunque le mail le ricevo su entrambi gli account.
    grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Come vedi dei risultati entrerai sempre nel primo if


    Codice PHP:

    if(strlen($row['cal_email'])>0// IL primo ris e' >0 SI entra qui
    {
    /*CODICE*/       
    }
    elseif(
    strlen($uemail)>0// Non entri mai perche' il primo controllo e' >0
    {
    /*CODICE*/

    Quindi devi sistemare le condizioni di controllo affinche' tu possa eseguire la porzione di
    codice desiderata. Entri nel secondo if se e solo se la lunghezza della prima stringa e' <= 0..
    (minore nn lo sarà mai ma a livello di controllo e' la condizione per cui il controllo restituisce true)

  5. #5
    si hai ragione, ma credo che qualsiasi controllo non farà mai quello che voglio, in quanto la mail sarà inviata a prescindere dai controlli.
    Anche se arrivati a quel punto dovessi valorizzare:
    Codice PHP:
    $row['cal_email'] = "";
            if(
    $row['cal_email']==""){
            
    $this->Mail->Body .=    "<div style='display:none'>Login: " $user "\n
    "
    .
                                    
    "Password: " $upassword1 "\n
    </div>"
    ;
            }
    //sia con elseif che con if il risultato non cambia
            
    if(strlen($uemail)>0){
            
    $this->Mail->Body .=    "<div style='display:yes'>Login: " $user "\n
    "
    .
                                    
    "Password: " $upassword1 "\n
    </div>"
    ;
            } 
    Anche facendo i sopracitati controlli, entrerebbe sempre nel secondo if o elseif strutturando il body nella stesso modo anche per il primo account.
    Sto cercando un'altro appiglio ma secondo te si potrebbe risolvere in altro modo?
    grazie ancora...

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ok identificata la porzione di codice incriminata, puoi per favore spiegarmi cosa devi fare .. mi sono un poco perso e sono di stra fretta, cosi' vediamo di impostare il controllo corretto .

  7. #7
    praticamente ho questo messaggio:

    username: mare1990 - password:mare1990

    Nominativo: antonio rossi
    Residente: roma

    Praticamente vorrei che, al secondo indirizzo quello che fa riferimento all'utente registrato arriva una mail completa al primo indirizzo che è quello di un ipotetico amministratore gli arriva soltanto Nominativo e Residente.

    la porzione di codice è questa:
    Codice PHP:
    $this->Mail->IsHTML(true); 
            
    $this->Mail->Body "<img alt=\"phpmailer\" src=\"cid:my-attach\" /> 
                                  


                    
    "I dati per l'accesso al sito sono:\n
    "


            if(
    strlen($row['cal_email'])>0){ 
            
    $this->Mail->Body .=    "<div style='display:none'>Login:".$user."\n
    "

            
    "Password: " $upassword1 "\n
    </div>"

        } 
        elseif(
    strlen($uemail)>0){ 
            
    $this->Mail->Body .="<div style='display:yes'>Login:"$user."\n
    "

            
    "Password: " $upassword1 "\n
    </div>"

        } 
            
    $this->Mail->Body .=    "<hr/>"
            
    "Nominativo: " $ulastname " " $ufirstname "\n
    "

            
    $this->Mail->IsHTML(true); 
    grazie ancora.

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ok allora non e' cosi' impossibile

    fai 2 messaggi distinti

    Codice PHP:

    $mailMessageAdmin 
    "MESSAGGIO X ADMIN" 
    $mailMessageUSER "MESSAGGIO X USER" 
    Poi mandi 2 email ai 2 indirizzi e non ti serve nemmeno l'if

    Codice PHP:

    $this
    ->Mail->IsHTML(true); 

    // MANDA EMAIL ADMIN 
    $this->Mail->Body .=    $mailMessageAdmin;
    $this->BuildBody();
    $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); 


    //MANDA EMAIL USER
    $this->Mail->Body .=    $mailMessageUser;
    $this->BuildBody();
    $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); 
    NOTA: Attenzione non vedo dove imposti i destinatari nell'email...
    Ovviamente devi re-impostare il destinatario admin quando mandi admin e utente poi



    P.S.
    Cmq non mi convice molto sta classe per inviare le email... quella che mi sono fatto io e' molto piu' user freindly


    Codice PHP:

    $opts 
    = array( "from"=> "asdsadsad@asdasd.com" /*.... etc*/ ) ;
    $mail = new Vmail($opts) ;

    $mail->setMessage($messaggio) ;
    $mail->setTo("destinatario@example.com") ;

    try{
    $mail->send();
    }(catch 
    Exception $e){ var_dump($e) ; } 
    Very very easy

  9. #9
    ti ringrazio....molto gentile...buona giornata

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 © 2025 vBulletin Solutions, Inc. All rights reserved.