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