Outlook: Change default email delay for "Do not deliver before" feature

In Outlook, there's a feature that allows me to schedule my emails for later delivery - I love it when I'm responding to emails late at night and don't want to appear to be a work-aholic. However, it defaults to 5PM - if it's before 5PM currently, it defaults to 5PM today, and if it's after 5PM currently, it defaults to tomorrow evening at 5PM. For example, it's currently 1:30AM where I am and Outlook is trying to deliver my emails at 5PM tomorrow evening:

enter image description here

Is there any way to change this default delivery time? Preferably, I'd like to set it to something like 6:30AM - that way, typing an email after hours, it's easy to schedule it for tomorrow morning (click "Delay Delivery" and then "OK"), where now I have to open "Delay Delivery", fix the time, usually fix the date as well, and then click OK.

I'm not looking to delay emails by default, I'm just looking for a way to change the assumption Outlook has that I'm interested in delivering my emails as soon as people go home - I'd prefer to deliver them in the morning before they arrive.

RESOLUTION: Thanks to the direction in the answer from Axel and code originally from Mike Hudson, I've written a macro that accomplishes exactly what I was looking to do. I pinned the macro to a button on my Quick Access Toolbar and now it's just a single click. Mission accomplished - thanks for the help!

Here's a link to the Delay Send Mail macro if you want to take a look yourself (you can follow this walk-through to get it pinned to your toolbar). I'm open to any feedback or enhancements suggestions anybody has, but it's a huge help for me as-is.


Solution 1:

Inspired by Mike Hudson, I wrote the following VBA code for you:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Const morningTime As String = "06:30:00"
    Const eveningTime As String = "19:00:00"

    Dim mi As Outlook.MailItem
    Dim dow As Integer
    Dim time As String
    Dim itIsLate As Boolean

    On Error GoTo ErrorHandler

    Set mi = Item

    dow = Weekday(Date, vbMonday)
    time = Format(Now, "HH:NN:SS")
    itIsLate = (StrComp(time, eveningTime) > 0)

    If (dow = vbSaturday) Or (dow = vbSunday) Or _
        ((dow = vbFriday) And itIsLate) Then
        '  Weekend! Delay until Monday morning
        mi.DeferredDeliveryTime = (Date + (vbSunday - dow + 1)) _
                                & " " & morningTime
    ElseIf itIsLate Then
        '  in the evening, delay until next morning
        mi.DeferredDeliveryTime = (Date + 1) & " " & morningTime
    End If
Exit Sub

ErrorHandler:
    MsgBox "Application_ItemSend: " & Err.Description
End Sub

The subroutine is called whenever you send a mail. During weekends, delivery is delayed until Monday morning. If the time is after "evening time", delivery is delayed until next morning. Please do some testing before actually using this macro!