PHP Mailer - "Could not connect to SMTP host" [duplicate]

1

I'm trying to send an email using PhpMailer, but to no avail.

My code is as follows:

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Load composer's autoloader
require 'vendor/autoload.php';

$mail = new PHPMailer(true);                              // Passing 'true' enables exceptions
try {
    //Server settings
    $mail->SMTPDebug = 2;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = '[email protected]';                 // SMTP username
    $mail->Password = 'minhasenha123';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, 'ssl' also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('[email protected]', 'Mailer');
    $mail->addAddress('[email protected]', 'Joe User');     // Add a recipient

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

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

The error message I receive is as follows:

2018-02-18 16:22:22 SERVER -&gt; CLIENT: 220 smtp.gmail.com ESMTP k2sm16846924qtk.60 - gsmtp<br> 2018-02-18 16:22:22 CLIENT -&gt; SERVER: EHLO localhost<br> 2018-02-18 16:22:23 SERVER -&gt; CLIENT: 250-smtp.gmail.com at your service, [2804:431:b705:30c:3c68:a6f0:fd8e:b468]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8<br> 2018-02-18 16:22:23 CLIENT -&gt; SERVER: STARTTLS<br> 2018-02-18 16:22:23 SERVER -&gt; CLIENT: 220 2.0.0 Ready to start TLS<br> SMTP Error: Could not connect to SMTP host.<br> 2018-02-18 16:22:23 CLIENT -&gt; SERVER: QUIT<br> 2018-02-18 16:22:23 <br> 2018-02-18 16:22:23 <br> SMTP Error: Could not connect to SMTP host.<br> Message could not be sent. Mailer Error: SMTP Error: Could not connect to SMTP host.

Note: I have made several changes, including some suggested in certain topics here, but without success. Has anyone ever had anything like this?

Note 2: I've already enabled permission for less trusted applications in gmail.

edit: There are several topics talking about the problem, however, none of these worked for me. I added the solution to the answers.

    
asked by anonymous 18.02.2018 / 17:31

3 answers

2

I found the solution by adding the following snippet:

$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
 )
);
    
18.02.2018 / 23:54
2

Change the port to 465 . Ex:

$mail->Port = 465;
    
18.02.2018 / 18:50
1

The problem is that Google (for security reasons) is blocking access to the account through your application.

To release access, do the following:

1. Sign in to your Gmail account

2. Visit link

3. Click Continue

Wait a few seconds and re-test and your Phpmailer should work. You can send both by ssl (port 465) and tls (port 587).

Edit

After discussion in the comments, it was verified that the above solution applies to authorization issues, not connection problems with Gmail smtp. However the above solution will be published if someone has a similar problem, as there may be some confusion between one thing and another.

The question problem was resolved from this answer in SOen and answered by the AP in this answer .

    
18.02.2018 / 20:09