Lua
Lua
Office365 Send Email using SMTP with OAuth2 Authentication
See more Office365 Examples
Demonstrates how to send email from smtp.office365.com using OAuth2 authentication.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.
-- 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 authorization via a web browser. Afterwards, the access token
-- can be repeatedly refreshed automatically (with no user interaction).
-- 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.
local jsonToken = chilkat.JsonObject.new()
local success = jsonToken:load_file("qa_data/tokens/office365.json")
local mailman = chilkat.MailMan.new()
mailman.smtp_host = "smtp.office365.com"
mailman.smtp_port = 587
mailman.start_tls = true
-- Use your Office365 email address for the SmtpUsername.
mailman.smtp_username = "OFFICE365_EMAIL_ADDRESS"
mailman.oauth2_access_token = jsonToken:string_of("access_token")
-- Create a new email object
local email = chilkat.Email.new()
email.subject = "This is a test"
email.body = "This is a test"
email.from = "MY_NAME <OFFICE365_EMAIL_ADDRESS>"
success = email:add_to("John Doe", "somebody@example.com")
-- Call SendEmail to connect to the SMTP server and send.
-- The connection (i.e. session) to the SMTP server remains
-- open so that subsequent SendEmail calls may use the
-- same connection.
success = mailman:send_email(email)
if not success then
print(mailman.last_error_text)
return
end
-- If SendEmail failed because of "Failed to get initial SMTP Response", then it may be
-- a firewall or anti-virus blocking communications.
-- See https://cknotes.com/smtp-office365-com-failed-to-get-initial-smtp-response/
success = mailman:close_smtp_connection()
if not success then
print("Connection to SMTP server not closed cleanly.")
end
print("Mail Sent!")