| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- /**
- * This example shows how to send via Google's Gmail servers using XOAUTH2 authentication.
- */
- //Import PHPMailer classes into the global namespace
- use PHPMailer\PHPMailer\PHPMailer;
- use PHPMailer\PHPMailer\OAuth;
- // Alias 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
- // 0 = off (for production use)
- // 1 = client messages
- // 2 = client and server messages
- $mail->SMTPDebug = 2;
- //Set the hostname of the mail server
- $mail->Host = 'smtp.gmail.com';
- //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
- $mail->Port = 587;
- //Set the encryption system to use - ssl (deprecated) or tls
- $mail->SMTPSecure = 'tls';
- //Whether to use SMTP authentication
- $mail->SMTPAuth = true;
- //Set AuthType to use XOAUTH2
- $mail->AuthType = 'XOAUTH2';
- //Fill in authentication details here
- $email = 'someone@gmail.com';
- $clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
- $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('someone@gmail.com', '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 = 'utf-8';
- $mail->msgHTML(file_get_contents('contentsutf8.html'), dirname(__FILE__));
- //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!";
- }
|