Lua Requires Chilkat v9.5.0.68+
Lua
Outlook -- Delete Email
See more Outlook Examples
Demonstrates how to delete email using the Microsoft Graph API.This example applies to: Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.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()
-- Use your previously obtained access token here:
http.auth_token = "MICROSOFT_GRAPH_ACCESS_TOKEN"
-- This example will search /Inbox for a message we want to delete.
-- First we need to get the folder ID for /Inbox.
-- Then we'll search for messages based on some criteria, and delete the matching messages.
-- Get the folder ID for /Inbox from the folder map created by this example
local htFolderMap = chilkat.Hashtable.new()
local sbMap = chilkat.StringBuilder.new()
sbMap:load_file("qa_data/outlook/folderMap.xml", "utf-8")
htFolderMap:add_from_xml_sb(sbMap)
-- Get the ID for the "/Inbox" folder:
local folderId = htFolderMap:lookup_str("/Inbox")
if not htFolderMap.last_method_success then
print("Folder ID not found")
return
end
local success = true
local json = chilkat.JsonObject.new()
json.emit_compact = false
-- Search for emails in this folder with the phrase "Amazon SES" in the subject, and return only the id and subject.
http:set_url_var("folder_id", folderId)
http:set_url_var("select", "id,subject")
http:set_url_var("filter", "contains(subject,'Amazon SES')")
local sbResponse = chilkat.StringBuilder.new()
success = http:quick_get_sb("https://graph.microsoft.com/v1.0/me/mailFolders/{$folder_id}/messages?$filter={$filter}&$select={$select}", sbResponse)
if not success then
print(http.last_error_text)
return
end
json:load_sb(sbResponse)
-- Show the results..
print(json:emit())
-- Sample results:
-- {
-- "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('me')/mailFolders('AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA')/messages(id,subject)",
-- "value": [
-- {
-- "@odata.etag": "W/\"CQAAABYAAADn68XtMop0TpsYJGpfKXY9AAA1jyl6\"",
-- "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAADLHd_AAAAA=",
-- "subject": "Amazon SES Address Verification Request in region US West (Oregon)"
-- },
-- {
-- "@odata.etag": "W/\"CQAAABYAAADn68XtMop0TpsYJGpfKXY9AAA1jyl7\"",
-- "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAADLHd_EAAAA=",
-- "subject": "Amazon SES Address Verification Request in region US West (Oregon)"
-- }
-- ]
-- }
--
-- ------------
-- Proceed to delete each of the above emails...
local resp = ""
local messageId = ""
local i = 0
local numEmails = json:size_of_array("value")
while i < numEmails do
json.i = i
messageId = json:string_of("value[i].id")
http:set_url_var("message_id", messageId)
print("Deleting " .. messageId)
resp = http:quick_delete_str("https://graph.microsoft.com/v1.0/me/messages/{$message_id}")
if not http.last_method_success then
print(http.last_error_text)
return
end
-- A 204 response indicates success.
if http.last_status == 204 then
print("Message deleted.")
else
print("Message not deleted.")
print(resp)
end
i = i + 1
end
-- Sample output:
-- Deleting AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAADLHd_AAAAA=
-- Message deleted.
-- Deleting AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAADLHd_EAAAA=
-- Message deleted.
--