Amir Hedieh
Amir Hedieh

Reputation: 1178

Can't send email using PHPMailer using Gmail(Failed to connect server)

i'm trying to send an email using PHPMailer. I've seen some topics about sending an email by Gmail servers using this package but i couldn't succeed.

$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP

$mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587; // or 587

$mail->Username = "[email protected]";
$mail->Password = "MyGmailPassword";
$mail->setFrom('[email protected]', 'First Last');
$mail->addAddress('[email protected]', 'John Doe');

$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->Body = 'Text to be sent';

if(!$mail->send()){
    echo 'message was not sent: ' . $mail->ErrorInfo;
}
else{
    echo 'Successfully sent';
}

my response :

2018-11-29 14:56:37 SMTP ERROR: Failed to connect to server:  (0)
<br>
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
<br>
message was not sent: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Upvotes: 0

Views: 705

Answers (2)

Gunnu
Gunnu

Reputation: 11

Try this with composer

require phpmailer/phpmailer
    <?php
        use PHPMailer\PHPMailer\PHPMailer;
        require 'vendor/autoload.php';
        $mail = new PHPMailer;
        $mail->isSMTP();
        $mail->SMTPDebug = 2;
        $mail->Host = 'smtp.gmail.com';
        $mail->Port = 587;
        $mail->SMTPAuth = true;enter code here
        $mail->Username = '@gmail.com';
        $mail->Password = '';
        $mail->setFrom('@gmail.com', '');
        $mail->addReplyTo('@gmail.com', '');
        $mail->addAddress('@gmail.com', ' Name');
        $mail->Subject = 'This for Testing PHPMailer';
        //$mail->msgHTML(file_get_contents('message.html'), __DIR__);
        $mail->Body = 'This is a plain text message body';
        //$mail->addAttachment('test.txt');
        if (!$mail->send()) {
            echo 'Mailer Error: ' . $mail->ErrorInfo;
        } else {
            echo 'The email message was sent.';
        }
    ?>

Upvotes: 0

bit mammoth
bit mammoth

Reputation: 51

You are sending the email to the wrong port/configuration. In your code you have it sent to Port 587 which handles stmp connections but you are sending it configured over ssl (which would need to be sent over port 465).

You ONLY need to change where it says ssl to "tls" and it will work.

$mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587; // or 587

Upvotes: 2

Related Questions