DataFlex
DataFlex
OAuth2 for a GMail using a P12 Service Account Key
See more GMail REST API Examples
Demonstrates how to use GMail with OAuth2 for aservice account within a Google Workspace Account where your email domain is custom (e.g., @yourcompany.com).
Note: This example does not work for Personal Google Accounts where the email domain is @gmail.com
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
Variant vCert
Handle hoCert
String sIss
String sScope
String sOauth_sub
Integer iNumSec
String sAccessToken
Handle hoMailman
Variant vEmail
Handle hoEmail
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// --------------------------------------------------------------------------------
// For a step-by-step guide for setting up your Google Workspace service account,
// see Setup Google Workspace Account for Sending SMTP GMail from a Service Account
// --------------------------------------------------------------------------------
// Begin by loading your Google service account key (.p12)
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadPfxFile Of hoCert "c:/someDirectory/keys/chilkat25-cbd7b42afbd8.p12" "notasecret" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// The ISS is your service account email address ending in gserviceaccount.com.
Move "chilkatsvc@chilkat25.iam.gserviceaccount.com" To sIss
// The scope is always the following string:
Move "https://mail.google.com/" To sScope
// The sub is your company email address
Move "bob@yourcompany.com" To sOauth_sub
// The access token is valid for this number of seconds.
Move 3600 To iNumSec
Get pvComObject of hoCert to vCert
Get ComG_SvcOauthAccessToken Of hoHttp sIss sScope sOauth_sub iNumSec vCert To sAccessToken
Get ComLastMethodSuccess Of hoHttp To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Else Begin
Showln "access token: " sAccessToken
End
// The access token allows us to send unlimited emails while it's valid. Once it expires, we must obtain and use a new one.
// -----------------------------------------------------------------------
Get Create (RefClass(cComChilkatMailMan)) To hoMailman
If (Not(IsComObjectCreated(hoMailman))) Begin
Send CreateComObject of hoMailman
End
// Set the properties for the GMail SMTP server:
Set ComSmtpHost Of hoMailman To "smtp.gmail.com"
Set ComSmtpPort Of hoMailman To 587
Set ComStartTLS Of hoMailman To True
Set ComSmtpUsername Of hoMailman To "bob@yourcompany.com"
Set ComOAuth2AccessToken Of hoMailman To sAccessToken
// Create a new email object
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
Set ComSubject Of hoEmail To "This is a test"
Set ComBody Of hoEmail To "This is a test"
Set ComFrom Of hoEmail To "Bob <bob@yourcompany.com>"
Get ComAddTo Of hoEmail "Recipient" "recipient@example.com" To iSuccess
// To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.
Get pvComObject of hoEmail to vEmail
Get ComSendEmail Of hoMailman vEmail To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoMailman To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComCloseSmtpConnection Of hoMailman To iSuccess
If (iSuccess <> True) Begin
Showln "Connection to SMTP server not closed cleanly."
End
Showln "Successfully sent email using Gmail with a service account key."
End_Procedure