SQL Server
SQL Server
Office365 POP3 Login with OAuth2 Authentication
See more Office365 Examples
Demonstrates how to authenticate using OAuth2 using the POP3 protocol with outlook.office365.com.Note: This example requires Chilkat v9.5.0.83 or greater.
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @mailman int
EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @mailman, 'MailHost', 'outlook.office365.com'
EXEC sp_OASetProperty @mailman, 'MailPort', 995
EXEC sp_OASetProperty @mailman, 'PopSsl', 1
-- Use your O365 email address here.
EXEC sp_OASetProperty @mailman, 'PopUsername', 'OFFICE365_EMAIL_ADDRESS'
-- When using OAuth2 authentication, leave the password empty.
EXEC sp_OASetProperty @mailman, 'PopPassword', ''
-- Load our previously obtained OAuth2 access token.
DECLARE @jsonToken int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonToken OUT
EXEC sp_OAMethod @jsonToken, 'LoadFile', @success OUT, 'qa_data/tokens/office365.json'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @jsonToken, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @jsonToken
RETURN
END
EXEC sp_OAMethod @jsonToken, 'StringOf', @sTmp0 OUT, 'access_token'
EXEC sp_OASetProperty @mailman, 'OAuth2AccessToken', @sTmp0
-- Make the TLS connection to the outlook.office365.com POP3 server.
EXEC sp_OAMethod @mailman, 'Pop3Connect', @success OUT
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @jsonToken
RETURN
END
-- Authenticate using XOAUTH2
EXEC sp_OAMethod @mailman, 'Pop3Authenticate', @success OUT
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @jsonToken
RETURN
END
-- Find out how many emails are on the server..
DECLARE @numEmails int
EXEC sp_OAMethod @mailman, 'CheckMail', @numEmails OUT
IF @numEmails < 0
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @jsonToken
RETURN
END
-- Examine the POP3 session log:
EXEC sp_OAGetProperty @mailman, 'Pop3SessionLog', @sTmp0 OUT
PRINT @sTmp0
-- The POP3 session log will look something like this:
-- **** Connected to outlook.office365.com:995
-- < +OK The Microsoft Exchange POP3 service is ready. [QwBIADIAUABSADEAOABD...YwBvAG0A]
-- > AUTH XOAUTH2
-- < +
-- > <base64 string in XOAUTH2 format>
-- < +OK User successfully authenticated.
-- > STAT
-- < +OK 3 375302
-- End the POP3 session and close the connection to the GMail server.
EXEC sp_OAMethod @mailman, 'Pop3EndSession', @success OUT
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @jsonToken
RETURN
END
PRINT 'Finished.'
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @jsonToken
END
GO