diff --git a/examples/azure_xoauth2.phps b/examples/azure_xoauth2.phps new file mode 100644 index 00000000..af26882e --- /dev/null +++ b/examples/azure_xoauth2.phps @@ -0,0 +1,126 @@ +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 = 'smtp.office365.com'; + +//Set the SMTP port number: +// - 465 for SMTP with implicit TLS, a.k.a. RFC8314 SMTPS or +// - 587 for SMTP+STARTTLS +$mail->Port = 587; + +//Set the encryption mechanism to use: +// - SMTPS (implicit TLS on port 465) or +// - STARTTLS (explicit TLS on port 587) +$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + +//Whether to use SMTP authentication +$mail->SMTPAuth = true; + +//Set AuthType to use XOAUTH2 +$mail->AuthType = 'XOAUTH2'; + +//Start Option 1: Use league/oauth2-client as OAuth2 token provider +//Fill in authentication details here +//Either the microsoft account owner, or the user that gave consent +$email = 'someone@somemicrosoftaccount.com'; +$clientId = 'RANDOMCHARS-----duv1n2TS'; +$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP'; +$tenantId = 'RANDOMCHARS-----HSFTAOIlagss'; + +//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 Azure( + [ + 'clientId' => $clientId, + 'clientSecret' => $clientSecret, + 'tenantId' => $tenantId, + ] +); + +//Pass the OAuth provider instance to PHPMailer +$mail->setOAuth( + new OAuth( + [ + 'provider' => $provider, + 'clientId' => $clientId, + 'clientSecret' => $clientSecret, + 'refreshToken' => $refreshToken, + 'userName' => $email, + ] + ) +); +//End Option 1 + +//Option 2: Another OAuth library as OAuth2 token provider +//Set up the other oauth library as per its documentation +//Then create the wrapper class that implementations OAuthTokenProvider +$oauthTokenProvider = new MyOAuthTokenProvider(/* Email, ClientId, ClientSecret, etc. */); + +//Pass the implementation of OAuthTokenProvider to PHPMailer +$mail->setOAuth($oauthTokenProvider); +//End Option 2 + +//Set who the message is to be sent from +//For Outlook, 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@someserver.com', 'John Doe'); + +//Set the subject line +$mail->Subject = 'PHPMailer Outlook 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!'; +}