Sql*_*yan 6 microsoft-outlook email delay
Outlook 中有一项功能可以让我安排电子邮件以便稍后发送 - 我喜欢在深夜回复电子邮件并且不想让自己看起来像个工作狂。但是,它默认为下午 5 点 - 如果当前在下午 5 点之前,则默认为今天下午 5 点,如果当前在下午 5 点之后,则默认为明天晚上 5 点。例如,我现在所在的位置是凌晨 1:30,Outlook 尝试在明天晚上 5 点发送我的电子邮件:

有什么办法可以改变这个默认的交货时间吗?最好将其设置为上午 6:30 之类的时间 - 这样,在下班后输入电子邮件,很容易将其安排在明天早上(单击“延迟交付”,然后单击“确定”),现在我已经打开“延迟交付”,固定时间,通常也固定日期,然后单击“确定”。
我不想在默认情况下延迟电子邮件,我只是在寻找一种方法来改变 Outlook 的假设,即我有兴趣在人们回家后立即发送电子邮件 - 我更愿意在在他们到达之前的早上。
解决方案: 由于 Axel 的答案中的方向和最初来自 Mike Hudson 的代码,我编写了一个宏,它完全实现了我想要做的事情。我将宏固定到快速访问工具栏上的一个按钮,现在只需单击一下即可。任务完成 - 感谢您的帮助!
如果您想亲自查看,这里有一个延迟发送邮件宏的链接(您可以按照此演练将其固定到工具栏)。我愿意接受任何人的任何反馈或改进建议,但这对我来说是一个巨大的帮助。
受Mike Hudson的启发,我为您编写了以下 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
Run Code Online (Sandbox Code Playgroud)
每当您发送邮件时都会调用该子例程。周末期间,交货会延迟至周一早上。如果时间在“晚上时间”之后,交货将延迟到第二天早上。请在实际使用此宏之前先进行一些测试!