Sample code for 30+ languages & platforms
DataFlex

Outlook -- Move Messages from One Folder to Another

See more Outlook Examples

Demonstrates how to move messages from one folder to another.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Handle hoHtFolderMap
    Variant vSbMap
    Handle hoSbMap
    String sSrcFolderId
    String sDstFolderId
    Handle hoJson
    Variant vSbResponse
    Handle hoSbResponse
    Variant vJsonRequestBody
    Handle hoJsonRequestBody
    Handle hoJsonResponse
    String sMessageId
    Integer i
    Integer iNumEmails
    Variant vResp
    Handle hoResp
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // Use your previously obtained access token here:
    Set ComAuthToken Of hoHttp To "MICROSOFT_GRAPH_ACCESS_TOKEN"

    // This example will move some messages from /Inbox to /Inbox/abc/subFolderB
    // We'll need the folder ids for both source and destination folders..

    // Get the folder IDs from the folder map created by this example 
    Get Create (RefClass(cComChilkatHashtable)) To hoHtFolderMap
    If (Not(IsComObjectCreated(hoHtFolderMap))) Begin
        Send CreateComObject of hoHtFolderMap
    End
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbMap
    If (Not(IsComObjectCreated(hoSbMap))) Begin
        Send CreateComObject of hoSbMap
    End
    Get ComLoadFile Of hoSbMap "qa_data/outlook/folderMap.xml" "utf-8" To iSuccess
    Get pvComObject of hoSbMap to vSbMap
    Get ComAddFromXmlSb Of hoHtFolderMap vSbMap To iSuccess

    // Get the IDs for the source and destination folders.
    Get ComLookupStr Of hoHtFolderMap "/Inbox" To sSrcFolderId
    Get ComLastMethodSuccess Of hoHtFolderMap To bTemp1
    If (bTemp1 <> True) Begin
        Showln "Folder ID not found"
        Procedure_Return
    End

    Get ComLookupStr Of hoHtFolderMap "/Inbox/abc/subFolderB" To sDstFolderId
    Get ComLastMethodSuccess Of hoHtFolderMap To bTemp1
    If (bTemp1 <> True) Begin
        Showln "Folder ID not found"
        Procedure_Return
    End

    Move True To iSuccess
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Set ComEmitCompact Of hoJson To False

    // Search for emails in this folder with the words "sample" or "example" in the subject, and return only the id and subject.
    Get ComSetUrlVar Of hoHttp "folder_id" sSrcFolderId To iSuccess
    Get ComSetUrlVar Of hoHttp "select" "id,subject" To iSuccess
    Get ComSetUrlVar Of hoHttp "filter" "contains(subject,'sample') or contains(subject,'example')" To iSuccess

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponse
    If (Not(IsComObjectCreated(hoSbResponse))) Begin
        Send CreateComObject of hoSbResponse
    End
    Get pvComObject of hoSbResponse to vSbResponse
    Get ComQuickGetSb Of hoHttp "https://graph.microsoft.com/v1.0/me/mailFolders/{$folder_id}/messages?$filter={$filter}&$select={$select}" vSbResponse To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get pvComObject of hoSbResponse to vSbResponse
    Get ComLoadSb Of hoJson vSbResponse To iSuccess
    // Show the results..
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    // Sample results:

    // 	{
    // 	  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('me')/mailFolders('AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA')/messages(id,subject)",
    // 	  "value": [
    // 	    {
    // 	      "@odata.etag": "W/\"CQAAABYAAADn68XtMop0TpsYJGpfKXY9AADOpwfr\"",
    // 	      "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAAM6Jj10AAAA=",
    // 	      "subject": "A sample email with Amazon in the body"
    // 	    },
    // 	    {
    // 	      "@odata.etag": "W/\"CQAAABYAAADn68XtMop0TpsYJGpfKXY9AADOpwfo\"",
    // 	      "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAAM6Jj1oAAAA=",
    // 	      "subject": "This is an example email from chilkat.io"
    // 	    }
    // 	  ]
    // 	}

    // ------------
    // Proceed to move (copy) each of the above emails to the destination folder.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonRequestBody
    If (Not(IsComObjectCreated(hoJsonRequestBody))) Begin
        Send CreateComObject of hoJsonRequestBody
    End
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonResponse
    If (Not(IsComObjectCreated(hoJsonResponse))) Begin
        Send CreateComObject of hoJsonResponse
    End
    Set ComEmitCompact Of hoJsonResponse To False

    Move 0 To i
    Get ComSizeOfArray Of hoJson "value" To iNumEmails
    While (i < iNumEmails)
        Set ComI Of hoJson To i

        Get ComStringOf Of hoJson "value[i].id" To sMessageId
        Get ComSetUrlVar Of hoHttp "message_id" sMessageId To iSuccess

        // Create a JSON request body with this content:
        // 
        // 		{
        // 		  "DestinationId": "destinationId-value"
        // 		}
        // 
        Get ComLookupStr Of hoHtFolderMap "/Inbox/abc/subFolderB" To sDstFolderId
        Get ComUpdateString Of hoJsonRequestBody "DestinationId" sDstFolderId To iSuccess
        Showln "Moving " sMessageId

        // Move the message to the destination folder
        Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
        If (Not(IsComObjectCreated(hoResp))) Begin
            Send CreateComObject of hoResp
        End
        Get pvComObject of hoJsonRequestBody to vJsonRequestBody
        Get pvComObject of hoResp to vResp
        Get ComHttpJson Of hoHttp "POST" "https://graph.microsoft.com/v1.0/me/messages/{$message_id}/move" vJsonRequestBody "application/json" vResp To iSuccess
        If (iSuccess = False) Begin
            Get ComLastErrorText Of hoHttp To sTemp1
            Showln sTemp1
            Procedure_Return
        End

        // A 200 response indicates success.
        Get ComLastStatus Of hoHttp To iTemp1
        If (iTemp1 = 200) Begin
            Showln "Message moved."
        End
        Else Begin
            Get ComStatusCode Of hoResp To iTemp1
            Showln "Response status code = " iTemp1
            Showln "Error: Message not moved."
        End

        // Show the response in both cases..
        Get ComBodyStr Of hoResp To sTemp1
        Get ComLoad Of hoJsonResponse sTemp1 To iSuccess
        Get ComEmit Of hoJsonResponse To sTemp1
        Showln sTemp1

        Move (i + 1) To i
    Loop

    // ---------------------------------------------------
    // Sample output:

    // Moving AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAAM6Jj2EAAAA=
    // Message moved.
    // {
    //   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#message",
    //   "@odata.type": "#microsoft.graph.message",
    //   "@odata.etag": "W/\"CQAAABYAAADn68XtMop0TpsYJGpfKXY9AADOp08j\"",
    //   "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAL8huwMAAADn68XtMop0TpsYJGpfKXY9AAAAzomk2wAAAA==",
    //   "createdDateTime": "2017-05-30T23:39:35Z",
    //   "lastModifiedDateTime": "2017-05-31T23:17:59Z",
    //   "changeKey": "CQAAABYAAADn68XtMop0TpsYJGpfKXY9AADOp08j",
    //   "categories": [
    //   ],
    //   "receivedDateTime": "2017-05-30T23:39:35Z",
    //   "sentDateTime": "2017-05-30T23:39:18Z",
    //   "hasAttachments": false,
    //   "internetMessageId": "<4aea73c1-2b29-f550-e6f1-eb22785a56f0@chilkatsoft.com>",
    //   "subject": "A sample email with Amazon in the body",
    //   "bodyPreview": "This email has the keyword Amazon in the body..",
    //   "importance": "normal",
    //   "parentFolderId": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAL8huwMAAAA=",
    //   "conversationId": "AQQkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAQADxkIFlCV-RFitsiVnh2MsI=",
    //   "isDeliveryReceiptRequested": null,
    //   "isReadReceiptRequested": false,
    //   "isRead": false,
    //   "isDraft": false,
    //   "webLink": "https://outlook.live.com/owa/?ItemID=AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5%2BvF7TKKdE6bGCRqXyl2PQAAAL8huwMAAADn68XtMop0TpsYJGpfKXY9AAAAzomk2wAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
    //   "inferenceClassification": "focused",
    //   "body": {
    //     "contentType": "html",
    //     "content": "<html>...</html>\r\n"
    //   },
    //   "sender": {
    //     "emailAddress": {
    //       "name": "Chilkat Software",
    //       "address": "support@chilkatsoft.com"
    //     }
    //   },
    //   "from": {
    //     "emailAddress": {
    //       "name": "Chilkat Software",
    //       "address": "support@chilkatsoft.com"
    //     }
    //   },
    //   "toRecipients": [
    //     {
    //       "emailAddress": {
    //         "name": "Chilkat Software",
    //         "address": "chilkatsoft@outlook.com"
    //       }
    //     }
    //   ],
    //   "ccRecipients": [
    //   ],
    //   "bccRecipients": [
    //   ],
    //   "replyTo": [
    //   ]
    // }
    // 
    // Moving AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEMAAAA5_vF7TKKdE6bGCRqXyl2PQAAAM6Jj2IAAAA=
    // Message moved.
    // {
    //   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#message",
    //   "@odata.type": "#microsoft.graph.message",
    //   "@odata.etag": "W/\"CQAAABYAAADn68XtMop0TpsYJGpfKXY9AADOp08k\"",
    //   "id": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAL8huwMAAADn68XtMop0TpsYJGpfKXY9AAAAzomk3AAAAA==",
    //   "createdDateTime": "2017-05-30T21:07:18Z",
    //   "lastModifiedDateTime": "2017-05-31T23:17:59Z",
    //   "changeKey": "CQAAABYAAADn68XtMop0TpsYJGpfKXY9AADOp08k",
    //   "categories": [
    //   ],
    //   "receivedDateTime": "2017-05-30T21:07:18Z",
    //   "sentDateTime": "2017-05-30T21:06:56Z",
    //   "hasAttachments": false,
    //   "internetMessageId": "<31fbbbce-2c70-c8d1-f0bd-35a7c7694a99@chilkat.io>",
    //   "subject": "This is an example email from chilkat.io",
    //   "bodyPreview": "This is an example email from chilkat.io",
    //   "importance": "normal",
    //   "parentFolderId": "AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAuAAADsVyfxjDU406Ic4X7ill8xAEA5_vF7TKKdE6bGCRqXyl2PQAAAL8huwMAAAA=",
    //   "conversationId": "AQQkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgAQAEa8sL3gJ_FNjgk2YkP1eTQ=",
    //   "isDeliveryReceiptRequested": null,
    //   "isReadReceiptRequested": false,
    //   "isRead": true,
    //   "isDraft": false,
    //   "webLink": "https://outlook.live.com/owa/?ItemID=AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5%2BvF7TKKdE6bGCRqXyl2PQAAAL8huwMAAADn68XtMop0TpsYJGpfKXY9AAAAzomk3AAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
    //   "inferenceClassification": "focused",
    //   "body": {
    //     "contentType": "html",
    //     "content": "<html>...</html>\r\n"
    //   },
    //   "sender": {
    //     "emailAddress": {
    //       "name": "Chilkat Software",
    //       "address": "admin@chilkat.io"
    //     }
    //   },
    //   "from": {
    //     "emailAddress": {
    //       "name": "Chilkat Software",
    //       "address": "admin@chilkat.io"
    //     }
    //   },
    //   "toRecipients": [
    //     {
    //       "emailAddress": {
    //         "name": "Chilkat Software",
    //         "address": "chilkatsoft@outlook.com"
    //       }
    //     }
    //   ],
    //   "ccRecipients": [
    //   ],
    //   "bccRecipients": [
    //   ],
    //   "replyTo": [
    //   ]
    // }
    // 


End_Procedure