Outlook 规则在指定时间范围内发送自动回复

Outlook 规则在指定时间范围内发送自动回复

我正在寻求有关 Outlook Webmail 的帮助。

具体来说,我尝试在一天中的特定时间设置自动回复消息。

Outlook 提供外出办公电子邮件功能,但我正在尝试设置规则,这样就不必每天手动打开和关闭此功能。

我认为很简单,只需在消息头中搜索特定的时间前缀字符串,例如:

"2020 07:" or "2020 08:"

并向他们发送自动回复。虽然不太优雅,但设置和使用都很简单。

然而,我遇到了一个意想不到的问题。虽然我自己公司的电子邮件服务器是按照 UDT(通用日期时间)设置的,但我们客户的服务器是按照当地时间设置的。因此,每封邮件的标题上也有 EDT 和 PST。

因此每条消息都有如下字符串:

Mon, 11 May 2020:15:36:36 -0400

Mon, 11 May 2020:19:36:43 +0000

Mon, 11 May 2020:12:36:40 -0700

这意味着我会在错误的时间发送自动回复。我尝试使用 Outlook 规则向导执行如下操作:

"2020 15:" and "2020:19" and "2020:12" or...[next set of hours to look for]

然后根据包含这三个字符串的邮件头转发电子邮件,但这在当前版本的 Outlook 中似乎不可能实现。

我确实了解一点 VBA,如果需要的话可以编写脚本,但真的感觉应该有一种使用现有规则工具的简单方法来进行设置。

换句话说,我当前对 Outlook 规则的尝试如下所示:

Apply this rule after the message arrives with 
"2020 00: and 2020 17: and 2020 01:" or 
"2020 01: and 2020 18: and 2020 02:" or 
etc...

我需要像这样的行为:

Apply this rule after the message arrives with 
"2020 00:" and "2020 17:" and "2020 01:" or 
"2020 01:" and "2020 18:" and "2020 02:" or 
etc...

任何帮助,将不胜感激。

答案1

据我所知,“使用特定模板回复”规则是仅限客户端的规则,不能在 Outlook Webmail 中使用。

此外,为了使规则适用于指定的时间范围,您可以尝试接收下的“之前”和“之后”条件。

希望这会有用。

答案2

全部,

我想我会把这个答案写下来,因为它基本上有效。下面是我在下班后用来自动回复的 VBA 脚本。我为获得此方法的访问权限而必须经历的步骤让我感到疯狂:newMail.ReceivedTime

首先,您需要更改 MS Outlook 的注册表。对于 Outlook 2016,路径如下:

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security
DWORD: EnableUnsafeClientMailRules
Value: 1

更多详细信息请访问以下链接:https://www.slipstick.com/outlook/rules/outlook-run-a-script-rules/

然后,您需要启用开发人员选项卡才能编写和保存VBA脚本。有关详细信息,请参见此处:https://www.msoutlook.info/question/279

最后,您需要编写一个VBA脚本来完成所需的自动回复任务,然后将其与 Outlook 规则关联。这就是我用来检查收到消息的时间,然后自动回复发件人的方法。我可以 100% 地保持此功能处于开启状态。

全面披露!偶尔,比如每月一次,它会崩溃,但我不知道具体原因。我猜我制定的运行此脚本的规则除了运行此脚本外,还会检查其他条件。例如,规则不会回复自动回复(以防止无限循环)。从技术上讲,这VBA在 Outlook 上运行是不允许的。我应该做的是在此脚本本身中定义所有条件,但我没有VBA编写所有这些代码的技能,我有真正的工作要做,而不是摸索着完成本应简单的任务。

话虽如此,这是一个相对简单的VBA脚本,95% 的时间都能完成我需要它做的事情。至少你可以把它作为一个好的起点。如果有人对这里可以改进的地方有任何建议,欢迎在下面发表评论,我会尝试一下。

Public Sub Check_ReceivedTime(newMail As Outlook.MailItem)

Dim obj As Object
Dim ReceivedHour As Integer
Dim newReply As MailItem
Dim msg As String

ReceivedHour = Hour(newMail.ReceivedTime)

If ReceivedHour < 6 Or ReceivedHour > 17 Then

    Set newReply = newMail.Reply
    msg = "Outside of normal office hours it is best to reach me at my cell for system emergencies. My number is XXX-XXX-XXXX"
    
    With newReply
        .To = newMail.SenderEmailAddress
        
    End With
    
    CreateMail newReply.To, msg

Else

    Debug.Print "Do not sent the automated reply."

End If

Set newReply = Nothing

End Sub


Private Sub CreateMail(ReplyAddress As String, msg As String)

Dim objMail As Outlook.MailItem

Set objMail = CreateItem(olMailItem)

With objMail
    .To = ReplyAddress
    
    .Body = msg
    .Subject = "After Hours Auto-Response"

    .Send

End With

End Sub

相关内容