PHPMailer: SMTP error Gmail

  • Creatore Discussione Creatore Discussione Giulo77
  • Data di inizio Data di inizio

Giulo77

Utente Attivo
15 Mar 2018
30
0
6
47
Ciao a tutti, sto cercando di introdurre nel mio sito web l'invio di una mail automatica tramite PHPMailer ma mi restituisce errore SMTP error: could not connect to SMTP host.

Le operazioni che ho eseguito sono:

php.ini --> Abilitato extension=php_openssl.dll

Il mio codice:
PHP:
<?php
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->SMTPDebug = 2;
    $mail->CharSet    = "UTF-8";
    $mail->SMTPSecure = 'tls';
    $mail->Host       = "smtp.gmail.com";
    $mail->Port       = 587;
    $mail->SMTPAuth   = true;
    $mail->Username   = "pippo@gmail.com";
    $mail->Password   = "***************";
 
    $mail->From = 'pippo@gmail.com';
    $mail->FromName = 'me stesso';
    $mail->addAddress('pluto@gmail.com');
 
    $mail->IsHTML(true);
    $mail->Subject = 'Titolo di prova';
    $mail->Body = 'Messaggio di prova';
    $mail->WordWrap = 80;
 
    if(!$mail->Send()) echo "Invio mail non riuscito!";
    else echo "Mail inviata correttamente!";
?>
Ho provato a passare i medesimi dati ad un amico che usa Laravel ed è riuscito, ovviamente su altro pc

Sul mio riesco a pingare ovviamente il server SMTP di Gmail ed ho configurato entrambe le mail

Allego anche output messaggi

Non so più dove sbattere la testa...pensavo fosse una cosa banale da fare!
 
Ultima modifica di un moderatore:
@Giulo77
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 
prova con questi parametri
PHP:
$eM_Host     = "smtp.gmail.com";
$eM_Port     = 465;
$eM_Auth     = true;
$eM_Secure   = "ssl";
 
Già provato, mi da errore più velocemente e non ho nessun messaggio client/server oltre all'errore connessione SMTP
 
Codice:
CLIENT -> SERVER: PHPmailer Test <b>smtp.gmail.com</b> 15-03-2018 15:22:25 <br /><br /> inviato a .....
con i parametri suggeriti, funziona,

per verificare il tuo script, inserisci le opzioni di debug
PHP:
$mail = new PHPMailer();

$mail->SMTPDebug = 4;
$mail->Debugoutput = "error_log";

leggiti quanto registrato nel log di php e verifica l'errore di connessione
 
ps, queste sono le prime due righe del log
Codice:
Connection: opening to ssl://smtp.gmail.com:465, timeout=300, options=array ()
 Connection: opened
 
provato e funzionante con la versione 6.0.3,
sistema i "require", lascia ssl e 465
PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\OAuth;
use PHPMailer\PHPMailer\Exception;

require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';
require 'src/OAuth.php';

$mail = new PHPMailer(true);                               // Passing `true` enables exceptions
try {
    //Server settings
    $mail->isSMTP();                                       // Set mailer to use SMTP
    $mail->SMTPDebug   = 4;                                // Enable verbose debug output
    $mail->Debugoutput = "error_log";
    $mail->Host        = 'smtp.gmail.com';                 // Specify main and backup SMTP servers
    $mail->Port        = 465;                              // TCP port to connect to
    $mail->SMTPAuth    = true;                             // Enable SMTP authentication
    $mail->SMTPSecure  = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Username    = 'useraccount@example.com';        // SMTP username
    $mail->Password    = 'secret';                         // SMTP password

    //Recipients
    $mail->setFrom('useraccount@example.com', 'Mailer');
    $mail->addAddress('recipient@example.com', 'Recipient User');      // Add a recipient
    $mail->addReplyTo('sender@example.com', 'Information');

//  $mail->addAddress('to@example.com');                   // Name is optional
//  $mail->addCC('cc@example.com');
//  $mail->addBCC('bcc@example.com');

    //Attachments
//  $mail->addAttachment('/var/tmp/file.tar.gz');          // Add attachments
//  $mail->addAttachment('/tmp/image.jpg', 'new.jpg');     // Optional name

    //Content
    $mail->isHTML(true);                                   // Set email format to HTML
    $mail->CharSet     = "UTF-8";
    $mail->Subject     = 'Here is the subject';
    $mail->Body        = '<b>This is the HTML message body in bold!</b>';
    $mail->AltBody     = 'This is the body in plain text for non-HTML mail clients';
    $mail->WordWrap    = 80;

    $mail->send();
    echo 'Message has been sent';
}
catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
?>
 
Ho trovato la soluzione finalmente! ;)

Mi è bastato aggiungere il seguente codice:

Codice:
    $mail->SMTPOptions = array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    );
 

Discussioni simili