Sample code for 30+ languages & platforms
Lua Requires Chilkat v9.5.0.68+

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

Lua
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.
--