PHPmailer + gmail

0

I'm using the latest version of PHPMailer to fire email using my Gmail account, this application runs locally, below my code (copied from PHPMailer's own GitHub talking about sending to Gmail):

$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "xx";
$mail->setFrom('[email protected]', 'First Last');
$mail->addAddress('[email protected]', 'John Doe');
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->Body = 'This is a plain-text message body';
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

But of the error, this one:

2018-06-29 20:15:09 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP d18-v6sm6204628qtl.32 - gsmtp
2018-06-29 20:15:09 CLIENT -> SERVER: EHLO localhost
2018-06-29 20:15:09 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [189.120.238.241]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250 SMTPUTF8
2018-06-29 20:15:09 CLIENT -> SERVER: STARTTLS
2018-06-29 20:15:09 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
SMTP Error: Could not connect to SMTP host.
2018-06-29 20:15:10 CLIENT -> SERVER: QUIT
2018-06-29 20:15:10 SERVER -> CLIENT: 
2018-06-29 20:15:10 SMTP ERROR: QUIT command failed: 
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

What else can I try?

PS: Allowing less secure apps is already flagged as ENABLED in Gmail

    
asked by anonymous 29.06.2018 / 22:16

1 answer

0

The main error message is this:

  

SMTP Error: Could not connect to SMTP host.

This can occur for several reasons:

  • Your server / hosting network is blocking access to smtp.gmail.com
  • Some firewall or proxy are preventing you from communicating with smtp.gmail.com
  • Some proxy is preventing your network (if the test is local) from using secure connections

However the most likely problem is that your hosting or local PHP does not have the SSL extension enabled, ie PHP will only be able to communicate with unsecured connections, to correct this problem go in php.ini and uncomment this line (if it is PHP 5 and 7.1):

Windows (and windows server):

;extension=php_openssl.dll

Leaving thus:

extension=php_openssl.dll

Linux:

;extension=openssl.so

Leaving thus:

extension=openssl.so

If it is php 7.2 , both linux and windows as Mac the line will look like this:

;extension=openssl

Uncomment as follows:

extension=openssl

Then save the document and restart Apache (or LightTTPD or Nginx) and FastCGI (if your server uses this, it usually restarts on its own, but depends on how it is configured).

Then create a file named phpinfo.php and put this:

<?php
var_dump(extension_loaded('openssl'));

Then notice if this appeared:

bool(true)

If it appears:

bool(false)

It's because you forgot something, or edited php.ini wrong (some servers have more than one for different things).

    
30.06.2018 / 03:20