Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = false
// 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.
let jsonToken = CkoJsonObject()!
success = jsonToken.loadFile(path: "qa_data/tokens/office365.json")
let mailman = CkoMailMan()!
mailman.smtpHost = "smtp.office365.com"
mailman.smtpPort = 587
mailman.startTLS = true
// Use your Office365 email address for the SmtpUsername.
mailman.smtpUsername = "OFFICE365_EMAIL_ADDRESS"
mailman.oAuth2AccessToken = jsonToken.string(of: "access_token")
// Create a new email object
let email = CkoEmail()!
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", emailAddress: "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.sendEmail(email: email)
if success != true {
print("\(mailman.lastErrorText!)")
return
}
// 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.closeSmtpConnection()
if success != true {
print("Connection to SMTP server not closed cleanly.")
}
print("Mail Sent!")
}