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

Outlook -- Copy Mail Folder and Contents to another Mail Folder

See more Outlook Examples

Copy a mailfolder and its contents to another mailfolder.

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 copy /Inbox/abc/subFolderA and its contents to /Inbox/xyz
-- We'll need the folder ids for both source and destination folders..

-- Get the folder IDs 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 IDs for the source and destination folders.
local srcFolderId = htFolderMap:lookup_str("/Inbox/abc/subFolderA")
if not htFolderMap.last_method_success then
    print("Folder ID not found")
    return
end

local dstFolderId = htFolderMap:lookup_str("/Inbox/xyz")
if not htFolderMap.last_method_success then
    print("Destination folder ID not found")
    return
end

-- Create a JSON request body with this content:
--
--         {
--           "DestinationId": "destinationId-value"
--         }

local jsonRequestBody = chilkat.JsonObject.new()
jsonRequestBody:update_string("DestinationId", dstFolderId)

http:set_url_var("src_folder_id", srcFolderId)

-- Copy the source folder to the new location
local resp = chilkat.HttpResponse.new()
local success = http:http_json("POST", "https://graph.microsoft.com/v1.0/me/mailFolders/{$src_folder_id}/copy", jsonRequestBody, "application/json", resp)
if not success then
    print(http.last_error_text)
    return
end

-- A 201 response indicates success.
if resp.status_code == 201 then
    print("Folder copied.")
else
    print("Response status code = " .. resp.status_code)
    print("Error: Folder not copied.")
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#mailFolder",
--       "@odata.type": "#microsoft.graph.mailFolder",
--       "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAM6JqMAAAAA=",
--       "displayName": "subFolderA",
--       "parentFolderId": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAL8huwEAAAA=",
--       "childFolderCount": 1,
--       "unreadItemCount": 0,
--       "totalItemCount": 0
--     }