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

    Invio Pec con phpmailer

    Buon pomeriggio a tutti.
    Solitamente utilizzo il pacchetto phpmailer per l'invio delle mail con indirizzi standard.
    Ora, devo inviarle tramite pec.
    Ho preso visione attraverso questo link https://guide.pec.it/posta-pec/confi...mma-posta.aspx sul come parametrizzare le variabili di phpmailer ed ho fatto cosi:
    Codice PHP:
     function setUp() {
    $this->Mail = new PHPMailer();
    $this->Mail->Priority 1;
    $this->Mail->Encoding "8bit";
    $this->Mail->CharSet "iso-8859-1";
    $this->Mail->From "areaverde@cert.azienda.it";
    $this->Mail->Host "smtps.pec.aruba.it";
    $this->Mail->Port 465;
    $this->Mail->Helo "";
    $this->Mail->SMTPAuth true;
    $this->Mail->SMTPSecure "SSL";
    $this->Mail->SMTPDebug true;
    $this->Mail->Username "areaverde@cert.azienda.it";
    $this->Mail->Password "lamiapassword";

    if(
    strlen($this->Mail->Host) > 0)            
    $this->Mail->Mailer "smtps";
    else{            
    $this->Mail->Mailer "mail";
    }
    }

    function 
    test_Html() {
    $this->Mail->Body "";
    $this->Mail->IsHTML(true);

    $this->Mail->Body .= "<p>Buona giornata</p>";
    $this->Mail->IsHTML(true);

    $this->Mail->AddAddress("mariorossi@pec.it");

    if(!
    $this->Mail->Send()){    
    echo 
    "La mail non é stata inviata al seguente indirizzo: mariorossi@pec.it";
    }else{    
    echo 
    "La mail è stata inviata al seguente indirizzo: mariorossi@pec.it";
    }

    Non c'è verso che invia.
    Mi aiutate per favore?
    Grazie a tutti.
    Ultima modifica di ANTAGONIA; 06-07-2021 a 14:00

  2. #2
    nessuno ha mai avuto la necessità di inviare delle pec con phpmailer?

  3. #3
    forse in setUp() manca un

    $this->Mail->isSMTP();

    per farlo funzionare come smtp ?!

    prova ..
    Ultima modifica di aquatimer2000; 07-07-2021 a 11:56
    aquatimer2000

  4. #4
    Quote Originariamente inviata da aquatimer2000 Visualizza il messaggio
    forse in setUp() manca un
    $this->Mail->isSMTP();
    per farlo funzionare come smtp ?!
    prova ..
    Ho provato ma niente.
    Questo è l'errore che mi restituisce:
    Codice PHP:
    SMTP -> FROM SERVERSMTP -> FROM SERVERSMTP -> ERRORHELO not accepted from server:
    Noticefputs(): send of 26 bytes failed with errno=32 Broken pipe in phpmailer/class.smtp.php on line 490
    SMTP 
    -> FROM SERVERSMTP -> ERRORHELO not accepted from serverSMTP -> NOTICEEOF caught while checking if connectedLa mail non è stata inviata al seguente indirizzoLanguage string failed to loadfrom_failedareaverde@cert.azienda.it 
    La linea 490 è questa in grassetto
    Codice PHP:
    function SendHello($hello$host) {        fputs($this->smtp_conn$hello " " $host $this->CRLF);
    //ecc ecc

    Domanda, questo pacchetto include due file class.smtp.php e class.phpmailer.php
    Nel primo file c'è questo parametro:
    var $SMTP_PORT = 25;// anche se ho sostituito 25 con 465 e con 587 non funziona

    Nel secondo ci sono tutti questi altri:
    var $From = "areaverde@cert.azienda.it";
    var $FromName = "AZIENDA";
    var $Host = "localhost";//smtps.pec.aruba.it
    var $Port = 25;//anche se ho sostituito 25 con 465 e con 587 non funziona

    Può essere utile?
    Grazie.

  5. #5
    questo che segue è il codice che sto utilizzando al momento e che (per ora) funziona regolarmente

    Codice PHP:
    // Instantiation and passing `true` enables exceptions
    $mail = new PHPMailer(true);


    $mail->isSMTP();
    $mail->Host       'tuo.smtps';
    $mail->SMTPAuth   true;
    $mail->Username   $pecMittente;
    $mail->Password   $pwd;
    $mail->SMTPSecure 'ssl';
    $mail->Port       465;


    $mail->XMailer 'xmailer_che_hoscelto';
    $mail->setLanguage('it''/language/');


    $mail->setFrom($pecMittente'Nome PEC Mittente');


    $mail->addAddress($pecDestinatario);


    // Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject "$oggettoPec";
    $mail->Body    "$messaggio";


    $mail->send(); 
    prova a confrontare con il tuo codice, io lo utilizzo in modo molto passivo, con questi pochi parametri a me funziona, non sono mai andato troppo a fondo, sia per necessità che per capacità (lo ammetto)
    aquatimer2000

  6. #6
    Ti ringrazio, ma non mi funziona.
    Le sto tentando tutte.
    Nel caso trover� la soluzione la poster� qui.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    189
    codice:
    /* Namespace alias. */
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    /* Include the Composer generated autoload.php file. */
    require 'C:\xampp\composer\vendor\autoload.php';
    
    /* If you installed PHPMailer without Composer do this instead: */
    /*
    require 'C:\PHPMailer\src\Exception.php';
    require 'C:\PHPMailer\src\PHPMailer.php';
    require 'C:\PHPMailer\src\SMTP.php';
    */
    
    /* Create a new PHPMailer object. Passing TRUE to the constructor enables exceptions. */
    $mail = new PHPMailer(TRUE);
    
    /* Open the try/catch block. */
    try {
       //Enable SMTP debugging.
       $mail->SMTPDebug = 3;                               
       //Set PHPMailer to use SMTP.
       $mail->isSMTP();
       $mail->SMTPAutoTLS = true;
       //Set SMTP host name                          
       $mail->Host = "smtps.pec.aruba.it";
       //Set this to true if SMTP host requires authentication to send email
       $mail->SMTPAuth = true;                          
       //Provide username and password     
       $mail->Username = "areaverde@cert.azienda.it";                 
       $mail->Password = "super_secret_password";                           
       //If SMTP requires TLS encryption then set it
       $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;                           
       //Set TCP port to connect to
       $mail->Port = 465;
       /* Set the mail sender. */
       $mail->setFrom('darth@empire.com', 'Darth Vader');
    
       /* Add a recipient. */
       $mail->addAddress('mariorossi@pec.it', 'Emperor');
    
       /* Set the subject. */
       $mail->Subject = 'Force';
    
       /* Set the mail message body. */
       $mail->Body = 'There is a great disturbance in the Force.';
    
       /* Finally send the mail. */
       $mail->send();
    }
    catch (Exception $e)
    {
       /* PHPMailer exception. */
       echo $e->errorMessage();
    }
    catch (\Exception $e)
    {
       /* PHP exception (note the backslash to select the global namespace Exception class). */
       echo $e->getMessage();
    }
    Così che errore ti stampa?

  8. #8
    Ho risolto.
    In pratica lo script che utilizzo è quello che hai postato qui.
    Il problema credo, fosse, una vecchissima versione di phpmailer che utilizzavo.
    Adesso con la 6.5 che non è proprio l'ultima, ma almeno è "semplice" e funziona.
    Ora, ho un altro problema grande.
    Ammettendo il caso che il tizio che si è registrato, abbia digitato male la sua pec, come faccio attraverso phpmailer a dirgli che la sua mail non è stata inviata?

    Perché mettendo un indirizzo pec che non esiste, l'invio lo fa ugualmente.
    Poi, nella casella di chi invia arrivano due notifiche la prima di "avviso di mancata consegna" e l'altro "ricevuta di accettazione".
    Ma vorrei controllare che l'invio non è stato eseguito per la pec fake come si fa solitamente:
    Codice PHP:
    if($mail->send()){        echo "<div class='alert alert-success' role='alert'>Abbiamo inviato la tua mail.<br/>Puoi proseguire la navigazione.</div>";        }    else{        echo "<div class='alert alert-danger' role='alert'>Problemi invio</div>";    } 

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    189
    Non è garantito che il tuo server risponda con lo stato delivery al di fuori del tuo server, poi alcuni server SMTP potrebbero impiegare minuti, ore o giorni.
    Quindi nel caso di creazione account, in realtà è una preattivazione a scadenza con una data temporale (giustamente vuoi utenti che ricordano i loro dati e inoltre non dormienti).

  10. #10
    Quote Originariamente inviata da darbula Visualizza il messaggio
    Non è garantito che il tuo server risponda con lo stato delivery al di fuori del tuo server, poi alcuni server SMTP potrebbero impiegare minuti, ore o giorni.
    Quindi nel caso di creazione account, in realtà è una preattivazione a scadenza con una data temporale (giustamente vuoi utenti che ricordano i loro dati e inoltre non dormienti).
    Dopo quello che hai scritto, potresti spiegarmi cortesemente, come mai se l'invio è verso email standard(non pec), che sono email fake, mi restituisce tramite quel controllo "Email non inviata" e invece con le pec mi dice comunque "email inviata", se il server di posta è lo stesso?

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.