Sample code for 30+ languages & platforms
Visual FoxPro

Outlook -- Move Messages from One Folder to Another

See more Outlook Examples

Demonstrates how to move messages from one folder to another.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loHtFolderMap
LOCAL loSbMap
LOCAL lcSrcFolderId
LOCAL lcDstFolderId
LOCAL loJson
LOCAL loSbResponse
LOCAL loJsonRequestBody
LOCAL loJsonResponse
LOCAL lcMessageId
LOCAL i
LOCAL lnNumEmails
LOCAL loResp

lnSuccess = 0

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

loHttp = CreateObject('Chilkat.Http')

* Use your previously obtained access token here:
loHttp.AuthToken = "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 
loHtFolderMap = CreateObject('Chilkat.Hashtable')
loSbMap = CreateObject('Chilkat.StringBuilder')
loSbMap.LoadFile("qa_data/outlook/folderMap.xml","utf-8")
loHtFolderMap.AddFromXmlSb(loSbMap)

* Get the IDs for the source and destination folders.
lcSrcFolderId = loHtFolderMap.LookupStr("/Inbox")
IF (loHtFolderMap.LastMethodSuccess <> 1) THEN
    ? "Folder ID not found"
    RELEASE loHttp
    RELEASE loHtFolderMap
    RELEASE loSbMap
    CANCEL
ENDIF

lcDstFolderId = loHtFolderMap.LookupStr("/Inbox/abc/subFolderB")
IF (loHtFolderMap.LastMethodSuccess <> 1) THEN
    ? "Folder ID not found"
    RELEASE loHttp
    RELEASE loHtFolderMap
    RELEASE loSbMap
    CANCEL
ENDIF

lnSuccess = 1
loJson = CreateObject('Chilkat.JsonObject')
loJson.EmitCompact = 0

* Search for emails in this folder with the words "sample" or "example" in the subject, and return only the id and subject.
loHttp.SetUrlVar("folder_id",lcSrcFolderId)
loHttp.SetUrlVar("select","id,subject")
loHttp.SetUrlVar("filter","contains(subject,'sample') or contains(subject,'example')")

loSbResponse = CreateObject('Chilkat.StringBuilder')
lnSuccess = loHttp.QuickGetSb("https://graph.microsoft.com/v1.0/me/mailFolders/{$folder_id}/messages?$filter={$filter}&$select={$select}",loSbResponse)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loHtFolderMap
    RELEASE loSbMap
    RELEASE loJson
    RELEASE loSbResponse
    CANCEL
ENDIF

loJson.LoadSb(loSbResponse)
* Show the results..
? loJson.Emit()

* 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.
loJsonRequestBody = CreateObject('Chilkat.JsonObject')
loJsonResponse = CreateObject('Chilkat.JsonObject')
loJsonResponse.EmitCompact = 0

i = 0
lnNumEmails = loJson.SizeOfArray("value")
DO WHILE i < lnNumEmails
    loJson.I = i

    lcMessageId = loJson.StringOf("value[i].id")
    loHttp.SetUrlVar("message_id",lcMessageId)

    * Create a JSON request body with this content:
    * 
    * 		{
    * 		  "DestinationId": "destinationId-value"
    * 		}
    * 
    lcDstFolderId = loHtFolderMap.LookupStr("/Inbox/abc/subFolderB")
    loJsonRequestBody.UpdateString("DestinationId",lcDstFolderId)
    ? "Moving " + lcMessageId

    * Move the message to the destination folder
    loResp = CreateObject('Chilkat.HttpResponse')
    lnSuccess = loHttp.HttpJson("POST","https://graph.microsoft.com/v1.0/me/messages/{$message_id}/move",loJsonRequestBody,"application/json",loResp)
    IF (lnSuccess = 0) THEN
        ? loHttp.LastErrorText
        RELEASE loHttp
        RELEASE loHtFolderMap
        RELEASE loSbMap
        RELEASE loJson
        RELEASE loSbResponse
        RELEASE loJsonRequestBody
        RELEASE loJsonResponse
        RELEASE loResp
        CANCEL
    ENDIF

    * A 200 response indicates success.
    IF (loHttp.LastStatus = 200) THEN
        ? "Message moved."
    ELSE
        ? "Response status code = " + STR(loResp.StatusCode)
        ? "Error: Message not moved."
    ENDIF

    * Show the response in both cases..
    loJsonResponse.Load(loResp.BodyStr)
    ? loJsonResponse.Emit()

    i = i + 1
ENDDO

* ---------------------------------------------------
* 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": [
*   ]
* }
* 

RELEASE loHttp
RELEASE loHtFolderMap
RELEASE loSbMap
RELEASE loJson
RELEASE loSbResponse
RELEASE loJsonRequestBody
RELEASE loJsonResponse
RELEASE loResp