自动切换OOF助理设置

Outlook中,OOF(Out of Office)助理是一种自动回复功能,可以在用户不在线时自动回复收到的邮件。本文将介绍如何通过VBScript脚本和任务计划程序,实现在用户设置“外出”日程时自动开启OOF助理,并在没有“外出”日程时自动关闭。

实现原理

该功能通过外部使用CDO(Collaboration Data Objects)库,并结合任务计划程序实现。例如,可以设置任务计划每30分钟检查一次。此外,也有内部解决方案,可以在CDOLive找到。但在实现过程中,可能会遇到MAPI问题,导致Outlook中的OOF消息与脚本中修改的消息不同步。

使用脚本

每个希望参与自动切换OOF助理的用户,至少需要在其OOF消息中设置一个(可配置的)占位符,以显示最终消息中的日期(例如,“外出了。如有紧急事项,请联系... - 此致敬礼,罗兰”)。然后,将被替换为“从<开始日期/时间>到<结束日期/时间>”。

“from”和“to”可以根据脚本中配置的语言进行替换,目前支持德语和英语。相应的占位符为

完成这些设置后,用户只需将缺席时间设置为“外出”日程或全天事件。OOFAutomation脚本将为他完全自动切换OOF助理。管理员可以通过将日志记录到指定文件来支持管理(见下文安装说明)。

安装

安装过程包括将两个脚本复制到OOFAutomation服务器可访问的文件夹中。这可以是任何安装了Outlook或Exchange Server的桌面PC或服务器。虽然尚未检查是否也可以安装单独提供的CDO库,但根据Microsoft在下载页面上的说明,应该是足够的。

将脚本复制到目标文件夹后,在OOFAutomation服务器上创建一个定时任务来启动脚本,例如,每30分钟启动一次。运行任务的帐户需要在Exchange中具有管理权限,或者至少具有访问所有最终用户MAPI存储的权限。但在激活任务之前,需要配置这两个脚本。

VBScript

' 配置:将"ServerName"更改为Exchange服务器名称 Const sServerName = "OEBFASRV02" ' 配置:将"MailboxName"更改为上述服务器上的一个管理邮箱名称 Dim sProfileInfo sProfileInfo = sServerName & vbLf & "Administrator" ' 配置:更改占位符和前缀以反映使用的语言(最多2种,如果需要更多,则需要自己修改代码...) Const placeHolderLang1 = "" Const placeHolderLang2 = "" Const infixFrom1 = "von " Const infixFrom2 = "from " Const infixTo1 = "bis " Const infixTo2 = "to " Const infixOn1 = "am " Const infixOn2 = "on " ' 配置:在发生错误时发送邮件给这些人 Const ErrMailDistributionList = "rkapl"

Log.vbs是一个单独可用的简单Logger类。它可以在其他脚本中按如下方式使用:

VBScript Set WshShell = WScript.CreateObject("WScript.Shell") ExecuteGlobal CreateObject("_").Scripting.FileSystemObject.OpenTextFile("Log.vbs", 1).ReadAll ' PathToLogFolder.. (默认值为Log.vbs中的defaultLogPath) ' NameOfLogFile.. (默认值为脚本名称) ' maxLevelToBeLogged.. 0 = ERROR, 1 = WARN, 2 = INFO, 3 = DEBUG (默认值) ' CommaSeparatedErrMailDistributionListString... ' 例如 "admin1, admin2, admin3" (默认值为Log.vbs中的defaultMailRecipients) ' ErrMailSender.. (默认值为Log.vbs中的defaultMailSender) ' ErrMailSubject.. (默认值为Log.vbs中的defaultMailSubject) Set theLogger = new_Logger(Array(PathToLogFolder, NameOfLogFile, maxLevelToBeLogged, CommaSeparatedErrMailDistributionListString, ErrMailSender, ErrMailSubject)) theLogger.LogInfo("Info Message") theLogger.LogWarn("Warning Message") theLogger.LogError("Error Message") theLogger.LogStream (WshShell.Exec object) ' 将Exec对象的stderr输出记录为LogError消息,其他所有消息记录为LogInfo theLogger.LogFatal("Fatal Message (stops the script)")

但是,在开始使用之前,也需要进行配置:

VBScript ' 配置:在发生错误时发送邮件给默认的人(如果脚本中未设置) Const defaultMailRecipients = "rkapl,any,other,person" ' 配置:错误邮件的默认发件人 Const defaultMailSender = "Administrator" ' 配置:错误邮件的默认主题 Const defaultMailSubject = "Process Error" ' 配置:内部错误记录的文件 Const internalLogFile = "\\path\to\your\internal\log\files\Log.vbs.internalErrs.log" ' 配置:日志文件存放的文件夹 Const defaultLogPath = "\\path\to\your\Logs"

最后,激活任务并通过在OOF消息文本中输入配置的占位符进行测试。设置一个开始时间在现在-1分钟,结束时间在现在+1分钟的“外出”日程。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485