I´m trying to make a applications that migrates data over cloud services, while trying to transfer mail messages I was incapable of finding a way to set the sent date for messages, after some search it seams that it cant be done using MSGraph. I know that ews can do it but ews is now deprecated so my questions is. Does any one know a way to do it using ms graph? There is really no solution for this and i will really be forced to use a deprecated api?
You need to set a few Extended properties to do this you need to set the MessageFlags extended property to make it appear as if it was a Sent Message. You also need to set the ClientSubmitTime https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagclientsubmittime-canonical-property and the delivery time https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagmessagedeliverytime-canonical-property to the date you want the message to be sent.
{
"Subject": "Test123"
,"Sender":{
"EmailAddress":{
"Name":"senderblah",
"Address":"senderblah@blah.com"
}}
,"Body": {
"ContentType": "HTML",
"Content": "Just the facts"
}
,"ToRecipients": [
{
"EmailAddress":{
"Name":"blah",
"Address":"blah@blah.com"
}}
]
,"SingleValueExtendedProperties": [
{
"PropertyId":"Integer 0x0E07",
"Value":"1"
}
,{
"PropertyId":"SystemTime 0x0039",
"Value":"2020-03-04T09:55:38.7169+11:00"
}
,{
"PropertyId":"SystemTime 0x0E06",
"Value":"2020-03-04T09:55:38.7169+11:00"
}
]
}
That said because you can't import the MIMEContent of a Message using the Graph API at the moment so doing large scale data migrations using the Graph is a little impractical (but it will work okay for small scale apps without to much diversity of content).I would still suggest using EWS for migration products while depreciated its still supported (and used by most migration vendors).