Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Send email at a later time

I am wondering if the /v1.0/me/sendMail has the ability to delay sending an email. In the Outlook client, you can specify that you want your email sent at a later date and time. I've snooped around to see if there is a property that can be set on the message object to indicate this.

Did anyone find a way to get this working? Of course, I could implement something in my software to handle the delayed sending, but why re-create something if it is already there.

like image 647
Tim Giese Avatar asked Dec 05 '25 13:12

Tim Giese


2 Answers

You can achieve delayed sending of emails using extended properties. These can be set on the Graph API request payload using the "singleValueExtendedProperties" attribute.

The property to use is PidTagDeferredSendTime which has the ID 0x3FEF and type SystemTime.

The id attribute of "singleValueExtendedProperties" takes different formats depending on the property you are setting.

For the deferred send time you would use SystemTime 0x3FEF.

Example using a HTTP JSON POST Payload:

{
  "message": {
    "subject": "Meet for lunch?",
    "body": {
      "contentType": "Text",
      "content": "The new cafeteria is open."
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "[email protected]"
        }
      }
    ],
    "singleValueExtendedProperties": 
    [
      {
           "id":"SystemTime 0x3FEF",
           "value":"2019-01-29T20:00:00"
      }
    ]
  }
}

Example using the Microsoft Graph API client library:

var client = /* Create and configure GraphServiceClient */;
var msg = new Message();

msg.ToRecipients = List<Recipient>(); 
msg.ToRecipients.Add(new Recipient() { 
  EmailAddress = new EmailAddress() { Address ="[email protected]" }
};

msg.Subject = "Meet for lunch?";
msg.Body = new ItemBody()
{
    Content = "The new cafeteria is open.",
    ContentType = BodyType.Text,
};

msg.SingleValueExtendedProperties = new MessageSingleValueExtendedPropertiesCollectionPage();
msg.SingleValueExtendedProperties.Add(new SingleValueLegacyExtendedProperty()
{
    Id = "SystemTime 0x3FEF",
    Value = DateTime.UtcNow.AddMinutes(5).ToString("o")
});
await client.Me.SendMail(msg, true).Request().PostAsync();
like image 188
Alex Duggleby Avatar answered Dec 08 '25 22:12

Alex Duggleby


https://gallery.technet.microsoft.com/office/Send-Emails-until-a-9cee20cf

You set the deferred send time extended prop when creating the item.

like image 43
David Sterling - MSFT Avatar answered Dec 08 '25 22:12

David Sterling - MSFT



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!