I use Outlook’s ‘delay delivery’ feature frequently when working at odd hours (or when I’d prefer to not get an immediate response). I don’t really want to set an expectation that I’ll answer/respond to email over the weekend or at 11pm. (It can also be useful to ensure that the email is at the top of someone’s inbox the next morning, having it sent shortly before they arrive in the office.)
Delay delivery can be accessed from Options > Delay Delivery when working on an email.

It does, however, default to 5pm on the current day as it’s ‘Do not deliver before’ date. I’ve always taken the time to update this manually, but it’d be nice to have a more automated approach (or a better default — always 9am the following day?). Anyway, it’s time to automate this, if possible.
There’s an old SuperUser question/answer from 2013 which, from I’m hoping still works.
First, enable the Developer tab in Outlook. File > Options > Customize Ribbon > Developer checkbox.

Second, allow all macros will notification in the Options > ‘Trust Center’. Ideally, I should learn how to get it digitally signed and use that option, but will save that for a later date.

Third, go to Developer > Macros > Macros and create a new macro called ‘DelaySendMail’.

Paste in the following content (taken from the SuperUser QA) and save it.
Please note, that as of August 2020, the syntax highlighter plugin I use is converting &
to &
so please replace these if you copy/paste the code.
Sub DelaySendMail()
On Error GoTo ErrHand ' Error Handling
Dim objMailItem As mailitem ' Object to hold mail item
Dim SendDate As String ' The date to send delayed mail
Dim SendTime As String ' The time to send delayed mail
Dim DelayMailAfter As Integer ' Latest hour mail is sent live
Dim DelayMailBefore As Integer ' Earliest hour to send mail live
Dim MailIsDelayed As Boolean ' Set if the mail will be delayed
Dim NoDeferredDelivery As String ' Value if deferred delivery is disabled
SendTime = " 06:00:00" ' Time to deliver delayed mail (6AM)
DelayMailBefore = 5 ' Delay mail sent before 5:00AM
DelayMailAfter = 20 ' Delay mail sent after 8:59PM
MailIsDelayed = False ' We assume it's being delivered now
NoDeferredDelivery = "1/1/4501" ' Magic number Outlook uses for "delay mail box isn't checked"
'Set object to mail item you have open
Set objMailItem = Outlook.ActiveInspector.CurrentItem
' Check and make sure current item is an unsent message
If objMailItem.Sent = True Then
Err.Raise 9000
End If
' If mail is currently delayed, remove the delay and quit
If objMailItem.DeferredDeliveryTime = NoDeferredDelivery Then
objMailItem.DeferredDeliveryTime = NoDeferredDelivery
MsgBox "Mail will be delivered immediately when sent", _
vbOKOnly, "Deferred delivery removed"
End If
' Set the date appropriately for the next weekday
If Weekday(Date, vbMonday) = 6 Then
' Today is Saturday
' Delay mail two days
SendDate = Date + (2)
MailIsDelayed = True
ElseIf Weekday(Date, vbMonday) = 7 Then
' Today is Sunday
' Delay mail one day
SendDate = Date + (1)
MailIsDelayed = True
Else
' Currently a weekday
' See if it's inappropriate to send mail right now
If DatePart("h", Now) < DelayMailBefore Then
' It's early morning - delay it
SendDate = Date
MailIsDelayed = True
ElseIf DatePart("h", Now) > DelayMailAfter Then
' It's late night - delay it until tomorrow morning
SendDate = Date + (1)
MailIsDelayed = True
Else
' It's okay to send mail during this time
' Don't enable delayed send
MailIsDelayed = False
End If
End If
If MailIsDelayed Then
' Mail should be delayed - set the delivery date/time
objMailItem.DeferredDeliveryTime = SendDate & SendTime
MsgBox "Mail will be delivered at " & _
SendDate & SendTime, _
vbOKOnly, "Mail delayed"
End If
Exit Sub
ErrHand:
' Handle well-known errors with message
' Other errors, just tell the user
If Err.Number = 13 Then
' No current item or current item isn't a mail message
MsgBox "Future delivery can only be set on mail items", vbOKOnly, "Not a mail item"
ElseIf Err.Number = 9000 Then
' The active message has already been sent
MsgBox "Please run this macro from an unsent mail item", vbOKOnly, "Not an unsent mail item"
Else
MsgBox "An error has occured on line " & Erl & _
", with a description: " & Err.Description & _
", and an error number " & Err.Number
End If
End Sub
Now, add the function to a button. Go back to File > Options > Quick Access Toolbar. Under ‘Choose commands from:’ locate ‘Macros’.

‘Add >>’ the Macro to the Quick Access Toolbar and ‘Modify…’ it to add a customized icon:

It is now visible above the ‘File’/’Home’ tabs:

I did the same from the email window (when an email is opened in a separate window) by clicking the dropdown arrow at the top left, and repeating the process above:

Clicking the icon in the email window, I am alerted to:

It’s late on 5/13, so this is perfect. If 6am is a tad too early (or late), the time is configurable. The code also suggests that no email will be sent over the weekend (another win for me).
Anyway, I can confirm that the change was made by opening up the ‘Delay Delivery’ dialog box:
