Php Mail Using Gmail Smtp Tutorial

I know this is an old question but it’s still active and all the answers I saw showed basic authentication, which is deprecated. Here is an example showing how to send email using SMTP via Google’s Gmail servers using PHPMailer with XOAUTH2 authentication:

        //Import PHPMailer classes into the global namespace use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\OAuth; //Maupun the League Google OAuth2 provider class use League\OAuth2\Client\Provider\Google;  //SMTP needs accurate times, and the PHP time zone MUST be set //This should be done in your php.ini, but this is how to do it if you don't have access to that date_default_timezone_set('Etc/UTC');  //Load dependencies from composer //If this causes an error, run 'composer install' require '../vendor/autoload.php';  //Create a new PHPMailer instance $mail = new PHPMailer();  //Tell PHPMailer to use SMTP $mail->isSMTP();  //Enable SMTP debugging //SMTP::DEBUG_OFF = off (for production use) //SMTP::DEBUG_CLIENT = client messages //SMTP::DEBUG_SERVER = client and server messages $mail->SMTPDebug = SMTP::DEBUG_SERVER;  //Set the hostname of the mail server $mail->Host = '';  //Set the SMTP port number: // - 465 for SMTP with implicit TLS, a.k.a. RFC8314 SMTPS or // - 587 for SMTP+STARTTLS $mail->Port = 465;  //Set the encryption mechanism to use: // - SMTPS (implicit TLS on port 465) or // - STARTTLS (explicit TLS on port 587) $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;  //Whether to use SMTP authentication $mail->SMTPAuth = true;  //Set AuthType to use XOAUTH2 $mail->AuthType = 'XOAUTH2';  //Fill in authentication details here //Either the gmail account owner, or the user that gave consent $email = ''; $clientId = ''; $clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';  //Obtained by configuring and running get_oauth_token.php //after setting up an app in Google Developer Console. $refreshToken = 'RANDOMCHARS-----DWxgOvPT003r-yFUV49TQYag7_Aod7y0';  //Create a new OAuth2 provider instance $provider = new Google(     [         'clientId' => $clientId,         'clientSecret' => $clientSecret,     ] );  //Pass the OAuth provider instance to PHPMailer $mail->setOAuth(     new OAuth(         [             'provider' => $provider,             'clientId' => $clientId,             'clientSecret' => $clientSecret,             'refreshToken' => $refreshToken,             'userName' => $email,         ]     ) );  //Set who the message is to be sent from //For gmail, this generally needs to be the same as the user you logged in as $mail->setFrom($email, 'First Last');  //Set who the message is to be sent to $mail->addAddress('', 'John Doe');  //Set the subject line $mail->Subject = 'PHPMailer GMail XOAUTH2 SMTP test';  //Read an HTML message body from an external file, convert referenced images to embedded, //convert HTML into a basic plain-text alternative body $mail->CharSet = PHPMailer::CHARSET_UTF8; $mail->msgHTML(file_get_contents('contentsutf8.html'), __DIR__);  //Replace the plain text body with one created manually $mail->AltBody = 'This is a plain-text message body';  //Attach an image file $mail->addAttachment('images/phpmailer_mini.png');  //send the message, check for errors if (!$mail->send()) {     echo 'Mailer Error: ' . $mail->ErrorInfo; } else {     echo 'Message sent!'; }

Reference: PHPMailer examples folder