Sample code for 30+ languages & platforms
Lua Requires Chilkat v11.0.0+

Outlook -- Create a Mail Folder

See more Outlook Examples

Creates a new mail folder as a child of an existing mail folder.

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 create a new mail folder as a child of /Inbox/abc

-- Get the existing folder ID 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)

local existingFolderId = htFolderMap:lookup_str("/Inbox/abc")
if not htFolderMap.last_method_success then
    print("Folder ID not found")
    return
end

-- Create a JSON request body with this content:
--
--     {
--       "displayName": "displayName-value",
--     }

-- This example will create /Inbox/abc/subFolderC
local jsonRequestBody = chilkat.JsonObject.new()
jsonRequestBody:update_string("displayName", "subFolderC")

http:set_url_var("folder_id", existingFolderId)

-- Create the folder "subFolderC" at the specified location.
local resp = chilkat.HttpResponse.new()
local success = http:http_json("POST", "https://graph.microsoft.com/v1.0/me/mailFolders/{$folder_id}/childFolders", jsonRequestBody, "application/json", resp)
if not success then
    print(http.last_error_text)
    return
end

-- A 201 response indicates success.
if http.last_status == 201 then
    print("Folder created.")
else
    print("Response status code = " .. resp.status_code)
    print("Error: Folder not created.")
end

-- Show the response in both cases..
local jsonResponse = chilkat.JsonObject.new()
jsonResponse.emit_compact = false
jsonResponse:load(resp.body_str)
print(jsonResponse:emit())

-- A sample successful JSON response looks like this:

--     {
--       "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('me')/mailFolders('AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAL8huv8AAAA%3D')/childFolders/$entity",
--       "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAM6JqMIAAAA=",
--       "displayName": "subFolderC",
--       "parentFolderId": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAL8huv8AAAA=",
--       "childFolderCount": 0,
--       "unreadItemCount": 0,
--       "totalItemCount": 0
--     }