DataFlex
DataFlex
Office365 IMAP with OAuth2 Authentication
See more Office365 Examples
Demonstrates how to authenticate using OAuth2 with outlook.office365.com.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJsonToken
Handle hoImap
String sTemp1
Move False To iSuccess
// 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.
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
If (Not(IsComObjectCreated(hoJsonToken))) Begin
Send CreateComObject of hoJsonToken
End
Get ComLoadFile Of hoJsonToken "qa_data/tokens/office365.json" To iSuccess
If (iSuccess = False) Begin
Showln "Failed to open the office365 OAuth JSON file."
Procedure_Return
End
Get Create (RefClass(cComChilkatImap)) To hoImap
If (Not(IsComObjectCreated(hoImap))) Begin
Send CreateComObject of hoImap
End
Set ComSsl Of hoImap To True
Set ComPort Of hoImap To 993
// Connect to the Office365 IMAP server.
Get ComConnect Of hoImap "outlook.office365.com" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Use OAuth2 authentication.
Set ComAuthMethod Of hoImap To "XOAUTH2"
// Login using our username (i.e. email address) and the access token for the password.
Get ComStringOf Of hoJsonToken "access_token" To sTemp1
Get ComLogin Of hoImap "OFFICE365_EMAIL_ADDRESS" sTemp1 To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "O365 OAuth authentication is successful."
// Do something...
Get ComSelectMailbox Of hoImap "Inbox" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Your application can continue to do other things in the IMAP session....
// When finished, logout and close the connection.
Get ComLogout Of hoImap To iSuccess
Get ComDisconnect Of hoImap To iSuccess
Showln "Finished."
End_Procedure