Outlook:更改“在此之前不传送”功能的默认电子邮件延迟时间

Outlook:更改“在此之前不传送”功能的默认电子邮件延迟时间

在 Outlook 中,有一项功能允许我安排电子邮件稍后发送 - 当我在深夜回复电子邮件并且不想显得像个工作狂时,我喜欢这个功能。但是,默认时间为下午 5 点 - 如果当前时间在下午 5 点之前,则默认为今天下午 5 点,如果当前时间在下午 5 点之后,则默认为明天晚上 5 点。例如,我所在的地方现在是凌晨 1:30,Outlook 试图在明天晚上 5 点发送我的电子邮件:

在此处输入图片描述

有什么方法可以更改此默认送货时间?最好将其设置为早上 6:30 左右 - 这样,在下班后输入电子邮件时,很容易将其安排在明天早上(单击“延迟送货”,然后单击“确定”),现在我必须打开“延迟送货”,确定时间,通常还要确定日期,然后单击“确定”。

我并不是想默认延迟发送电子邮件,我只是在寻找一种方法来改变 Outlook 的假设,即我希望在人们回家后立即发送电子邮件 - 我更愿意在他们到达之前的早上发送电子邮件。

解决: 感谢 Axel 的回答中的指导和代码最初来自 Mike Hudson,我编写了一个宏,它完全可以完成我想要做的事情。我将宏固定到快速访问工具栏上的一个按钮上,现在只需单击一下即可。任务完成 - 感谢您的帮助!

这是一个链接到延迟发送邮件宏如果你想自己看看(你可以按照此步骤操作将其固定到工具栏)。我愿意听取任何人的反馈或增强建议,但这对我来说是一个巨大的帮助。

答案1

灵感来自麦克·哈德森,我为您编写了以下 VBA 代码:

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

每当您发送邮件时,都会调用该子程序。周末期间,邮件会延迟到周一早上发送。如果时间是在“晚上时间”之后,邮件会延迟到第二天早上发送。请在实际使用此宏之前进行一些测试!

相关内容