Visual FoxPro
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
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