Sample code for 30+ languages & platforms
Visual Basic 6.0

Outlook -- Move Messages from One Folder to Another

See more Outlook Examples

Demonstrates how to move messages from one folder to another.

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

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

Dim http As New ChilkatHttp

' Use your previously obtained access token here:
http.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 
Dim htFolderMap As New ChilkatHashtable
Dim sbMap As New ChilkatStringBuilder
success = sbMap.LoadFile("qa_data/outlook/folderMap.xml","utf-8")
success = htFolderMap.AddFromXmlSb(sbMap)

' Get the IDs for the source and destination folders.
Dim srcFolderId As String
srcFolderId = htFolderMap.LookupStr("/Inbox")
If (htFolderMap.LastMethodSuccess <> 1) Then
    Debug.Print "Folder ID not found"
    Exit Sub
End If

Dim dstFolderId As String
dstFolderId = htFolderMap.LookupStr("/Inbox/abc/subFolderB")
If (htFolderMap.LastMethodSuccess <> 1) Then
    Debug.Print "Folder ID not found"
    Exit Sub
End If

success = 1
Dim json As New ChilkatJsonObject
json.EmitCompact = 0

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

Dim sbResponse As New ChilkatStringBuilder
success = http.QuickGetSb("https://graph.microsoft.com/v1.0/me/mailFolders/{$folder_id}/messages?$filter={$filter}&$select={$select}",sbResponse)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

success = json.LoadSb(sbResponse)
' Show the results..
Debug.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/\"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.
Dim jsonRequestBody As New ChilkatJsonObject
Dim jsonResponse As New ChilkatJsonObject
jsonResponse.EmitCompact = 0

Dim messageId As String
Dim i As Long
i = 0
Dim numEmails As Long
numEmails = json.SizeOfArray("value")
Do While i < numEmails
    json.I = i

    messageId = json.StringOf("value[i].id")
    success = http.SetUrlVar("message_id",messageId)

    ' Create a JSON request body with this content:
    ' 
    ' 		{
    ' 		  "DestinationId": "destinationId-value"
    ' 		}
    ' 
    dstFolderId = htFolderMap.LookupStr("/Inbox/abc/subFolderB")
    success = jsonRequestBody.UpdateString("DestinationId",dstFolderId)
    Debug.Print "Moving " & messageId

    ' Move the message to the destination folder
    Dim resp As New ChilkatHttpResponse
    success = http.HttpJson("POST","https://graph.microsoft.com/v1.0/me/messages/{$message_id}/move",jsonRequestBody,"application/json",resp)
    If (success = 0) Then
        Debug.Print http.LastErrorText
        Exit Sub
    End If

    ' A 200 response indicates success.
    If (http.LastStatus = 200) Then
        Debug.Print "Message moved."
    Else
        Debug.Print "Response status code = " & resp.StatusCode
        Debug.Print "Error: Message not moved."
    End If

    ' Show the response in both cases..
    success = jsonResponse.Load(resp.BodyStr)
    Debug.Print jsonResponse.Emit()

    i = i + 1
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": [
'   ]
' }
'