Sample code for 30+ languages & platforms
AutoIt

POP3 GMail XOAUTH2 Authentication

See more GMail SMTP/IMAP/POP Examples

Demonstrates using OAuth2 authentication with pop.gmail.com.

Note: This example requires Chilkat v9.5.0.83 or greater.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

$oMailman = ObjCreate("Chilkat.MailMan")

$oMailman.MailHost = "pop.gmail.com"
$oMailman.MailPort = 995
$oMailman.PopSsl = True

$oMailman.PopUsername = "my_account@gmail.com"

; If using OAuth2 authentication, leave the password empty.
$oMailman.PopPassword = ""

; Load our previously obtained OAuth2 access token.
; See Getting a GMail POP3 OAuth2 Access Token
$oJsonToken = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oJsonToken.LoadFile("qa_data/tokens/gmail_pop3.json")
If ($bSuccess = False) Then
    ConsoleWrite($oJsonToken.LastErrorText & @CRLF)
    Exit
EndIf

$oMailman.OAuth2AccessToken = $oJsonToken.StringOf("access_token")

; Make the TLS connection to the POP3 server.
$bSuccess = $oMailman.Pop3Connect()
If ($bSuccess <> True) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    Exit
EndIf

; Authenticate..
$bSuccess = $oMailman.Pop3Authenticate()
If ($bSuccess <> True) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    Exit
EndIf

; Find out how many emails are on the server..
Local $iNumEmails = $oMailman.CheckMail()
If ($iNumEmails < 0) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    Exit
EndIf

; Examine the POP3 session log:
ConsoleWrite($oMailman.Pop3SessionLog & @CRLF)

; The POP3 session log will look something like this:

; **** Connected to pop.gmail.com:995
; < +OK Gpop ready for requests from 87.9.200.42 l16mb86351205iok
; > AUTH XOAUTH2 dXNlcj1....VaMDJFAQE=
; < +OK Welcome.
; > STAT
; < +OK 301 1627357
; 
; -- Finished.

; End the POP3 session and close the connection to the GMail server.
$bSuccess = $oMailman.Pop3EndSession()
If ($bSuccess <> True) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("-- Finished." & @CRLF)