Search code examples
phpemailsmtpgmailphpmailer

Why do I get this error with phpmailer when trying to send an email?


Error:

2021-03-19 15:17:50 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP t24sm3903607qto.23 - gsmtp
2021-03-19 15:17:50 CLIENT -> SERVER: EHLO localhost
2021-03-19 15:17:50 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [24.233.165.10]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2021-03-19 15:17:50 CLIENT -> SERVER: STARTTLS
2021-03-19 15:17:50 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2021-03-19 15:17:50 CLIENT -> SERVER: EHLO localhost
2021-03-19 15:17:50 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [24.233.165.10]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2021-03-19 15:17:50 CLIENT -> SERVER: AUTH LOGIN
2021-03-19 15:17:50 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2021-03-19 15:17:50 CLIENT -> SERVER: [credentials hidden]
2021-03-19 15:17:50 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2021-03-19 15:17:50 CLIENT -> SERVER: [credentials hidden]
2021-03-19 15:17:51 SERVER -> CLIENT: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials t24sm3903607qto.23 - gsmtp
2021-03-19 15:17:51 SMTP ERROR: Password command failed: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials t24sm3903607qto.23 - gsmtp
SMTP Error: Could not authenticate.
2021-03-19 15:17:51 CLIENT -> SERVER: QUIT
2021-03-19 15:17:51 SERVER -> CLIENT: 221 2.0.0 closing connection t24sm3903607qto.23 - gsmtp
SMTP Error: Could not authenticate.
Message could not be sent. Mailer Error: SMTP Error: Could not authenticate.

My Code:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
require 'PHPMailer/PHPMailer/src/Exception.php';
require 'PHPMailer/PHPMailer/src/PHPMailer.php';
require 'PHPMailer/PHPMailer/src/SMTP.php';
 
// Instantiation and passing [ICODE]true[/ICODE] enables exceptions
$mail = new PHPMailer(true);
 
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   = 'myemail@gmail.com';                     // SMTP username
    $mail->Password   = '*************';                               // SMTP password
    $mail->SMTPSecure = 'tls';                                  // Enable TLS encryption, [ICODE]ssl[/ICODE] also accepted
    $mail->Port       = 587;                                    // TCP port to connect to
 
    //Recipients
    $mail->setFrom('myemail.com', 'Mailer');
    $mail->addAddress('myemail@gmail.com', 'Recipients');     // Add a recipient
    //$mail->addAddress('');
    $mail->addReplyTo('myemai@gmail.com', 'Mailer');
    //$mail->addCC('');
    //$mail->addBCC('');
 
    // Attachments
    //$mail->addAttachment('');         // Add attachments
    //$mail->addAttachment('');
 
    // 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}";
}

I have less secure apps enabled. I have IMAP enabled. Two step verification off. I downloaded the latest version from github. The email is my email and does work. What should I do? I am trying this from my localhost on xampp. My password is correct. Why does this happen?

Less secure apps on


Solution

  • You edited your question several times, each time changing its meaning, that should be avoided in future as it generates tones of comments. Instead next time pls, read error messages and fix them before asking. What you did wrong (in order of appearance)

    1. Don't use assigning methods without values just for future like $mail->addAddress('');, $mail->addCC(''), etc, it will cause errors.
    2. Use proper SMTP server address.
    3. Use proper credentials. Of course login and password are case sensitive.
    4. Turn ON 'Less secure applications' on your Gmail account if still have problem with credentials errors. It can be done at the security tab as shown at screenshot

    Turn on less secure apps in your account