我正在寻求有关 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