PHPMailer, SMTP connect() failed error with Gmail

49,779

Solution 1

You may need to specify the address from which the message is going to be sent, like this:

$mail->From = '[email protected]';

I would also give isHTML a parameter, either true or false:

$m->isHTML(true);

Another option is trying to drop the port specification all together. There are several other parameters that you may find useful. The following example is code I've tested, see if you can adapt it for your uses:

$mail = new PHPMailer;
$mail->isSMTP();/*Set mailer to use SMTP*/
$mail->Host = 'mail.domain.com';/*Specify main and backup SMTP servers*/
$mail->Port = 587;
$mail->SMTPAuth = true;/*Enable SMTP authentication*/
$mail->Username = $username;/*SMTP username*/
$mail->Password = $password;/*SMTP password*/
/*$mail->SMTPSecure = 'tls';*//*Enable encryption, 'ssl' also accepted*/
$mail->From = '[email protected]';
$mail->FromName = $name;
$mail->addAddress($to, 'Recipients Name');/*Add a recipient*/
$mail->addReplyTo($email, $name);
/*$mail->addCC('[email protected]');*/
/*$mail->addBCC('[email protected]');*/
$mail->WordWrap = 70;/*DEFAULT = Set word wrap to 50 characters*/
$mail->addAttachment('../tmp/' . $varfile, $varfile);/*Add attachments*/
/*$mail->addAttachment('/tmp/image.jpg', 'new.jpg');*/
/*$mail->addAttachment('/tmp/image.jpg', 'new.jpg');*/
$mail->isHTML(false);/*Set email format to HTML (default = true)*/
$mail->Subject = $subject;
$mail->Body    = $message;
$mail->AltBody = $message;
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    header("Location: ../docs/confirmSubmit.html");
}

Hope this helps!

Solution 2

This answer work form me: https://stackoverflow.com/a/47205296/2171764

I use:

$mail->Host = 'tls://smtp.gmail.com:587';
$mail->SMTPOptions = array(
   'ssl' => array(
     'verify_peer' => false,
     'verify_peer_name' => false,
     'allow_self_signed' => true
    )
);
Share:
49,779
Devilquest
Author by

Devilquest

Updated on July 09, 2022

Comments

  • Devilquest
    Devilquest almost 2 years

    I’m trying to make a contact form and I’m using PHPMailer. I tried that on localhost with xampp and it works perfect. But when i upload to my host i get the error SMTP connect() failed.

    Here is my code:

    $m = new PHPMailer;
    
    $m->isSMTP();
    $m->SMTPAuth = true;
    
    $m->Host = "smtp.gmail.com";
    $m->Username = "[email protected]";
    $m->Password = "mypass";
    $m->SMTPSecure = "ssl";
    $m->Port = "465";
    
    $m->isHTML();
    
    $m->Subject = "Hello world";
    $m->Body = "Some content";
    
    $m->FromName = "Contact";
    
    $m->addAddress('[email protected]', 'Test');
    

    I've tried to change the port to 587 and the SMTPsecure to tls (and all the combinations). But doesn’t work. Any advice to solve this?

    Thanks