Chilkat  HOME  Android™  Classic ASP  C  C++  C#  Mono C#  .NET Core C#  C# UWP/WinRT  DataFlex  Delphi ActiveX  Delphi DLL  Visual FoxPro  Java  Lianja  MFC  Objective-C  Perl  PHP ActiveX  PHP Extension  PowerBuilder  PowerShell  PureBasic  CkPython  Chilkat2-Python  Ruby  SQL Server  Swift 2  Swift 3,4,5...  Tcl  Unicode C  Unicode C++  Visual Basic 6.0  VB.NET  VB.NET UWP/WinRT  VBScript  Xojo Plugin  Node.js  Excel  Go
| (MFC) Office365 IMAP OAuth2 with Shared MailboxDemonstrates how to authenticate using OAuth2 with shared mailboxes in outlook.office365.com. (SASL XOAUTH2 authentication for shared mailboxes in Office 365) For more information, see https://docs.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth#sasl-xoauth2-authentication-for-shared-mailboxes-in-office-365 
 #include <CkJsonObject.h> #include <CkImap.h> void ChilkatSample(void) { CkString strOut; // An Office365 OAuth2 access token must first be obtained prior // to running this code. // Getting the OAuth2 access token for the 1st time requires the O365 account owner's // interactive authorizaition via a web browser. Afterwards, the access token // can be repeatedly refreshed automatically. // See the following examples for getting and refreshing an OAuth2 access token // Get Office365 SMTP/IMAP/POP3 OAuth2 Access Token // Refresh Office365 SMTP/IMAP/POP3 OAuth2 Access Token // First get our previously obtained OAuth2 access token. CkJsonObject jsonToken; bool success = jsonToken.LoadFile("qa_data/tokens/office365.json"); if (success == false) { strOut.append("Failed to open the office365 OAuth JSON file."); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } CkImap imap; imap.put_Ssl(true); imap.put_Port(993); // Connect to the Office365 IMAP server. success = imap.Connect("outlook.office365.com"); if (success != true) { strOut.append(imap.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Use OAuth2 authentication. imap.put_AuthMethod("XOAUTH2"); // In case of shared mailbox access using OAuth, application needs to obtain the access token on behalf of a user // but replace the userName field in the SASL XOAUTH2 encoded string with the email address of the shared mailbox. // Login using the shared mailbox email address for the username, and the access token for the password. // This will cause the SASL XOAUTH2 format to be used, as described at Office 365 SASL XOAUTH2 format success = imap.Login("SHARED_MAILBOX_EMAIL_ADDRESS",jsonToken.stringOf("access_token")); if (success != true) { strOut.append(imap.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } strOut.append("O365 OAuth2 shared mailbox authentication is successful."); strOut.append("\r\n"); // Do something... success = imap.SelectMailbox("Inbox"); if (success != true) { strOut.append(imap.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Your application can continue to do other things in the IMAP session.... // When finished, logout and close the connection. success = imap.Logout(); success = imap.Disconnect(); strOut.append("Finished."); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); } | ||||
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.