Lua
Lua
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 Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local http = chilkat.Http.new()
-- --------------------------------------------------------------------------------
-- 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)
local cert = chilkat.Cert.new()
local success = cert:load_pfx_file("c:/someDirectory/keys/chilkat25-cbd7b42afbd8.p12", "notasecret")
if not success then
print(cert.last_error_text)
return
end
-- The ISS is your service account email address ending in gserviceaccount.com.
local iss = "chilkatsvc@chilkat25.iam.gserviceaccount.com"
-- The scope is always the following string:
local scope = "https://mail.google.com/"
-- The sub is your company email address
local oauth_sub = "bob@yourcompany.com"
-- The access token is valid for this number of seconds.
local numSec = 3600
local accessToken = http:g_svc_oauth_access_token(iss, scope, oauth_sub, numSec, cert)
if not http.last_method_success then
print(http.last_error_text)
return
else
print("access token: " .. accessToken)
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.
-- -----------------------------------------------------------------------
local mailman = chilkat.MailMan.new()
-- Set the properties for the GMail SMTP server:
mailman.smtp_host = "smtp.gmail.com"
mailman.smtp_port = 587
mailman.start_tls = true
mailman.smtp_username = "bob@yourcompany.com"
mailman.oauth2_access_token = accessToken
-- Create a new email object
local email = chilkat.Email.new()
email.subject = "This is a test"
email.body = "This is a test"
email.from = "Bob <bob@yourcompany.com>"
success = email:add_to("Recipient", "recipient@example.com")
-- To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.
success = mailman:send_email(email)
if not success then
print(mailman.last_error_text)
return
end
success = mailman:close_smtp_connection()
if not success then
print("Connection to SMTP server not closed cleanly.")
end
print("Successfully sent email using Gmail with a service account key.")