首页 > 解决方案 > 当电子邮件率增加时发送警报的收件箱规则

问题描述

我每天都会收到数百个自动警报(例如 CPU/内存峰值、SQL 块)。但是,通常情况下,当这些警报出现时,我无能为力/不想做;我只关心警报激增的时候,因为那是不正常的。我至少让他们分开文件夹,但这仍然让人分心,因为我必须始终注意那个未读的电子邮件号码。

当我在 N 分钟内收到超过 X 封来自 sendername 的电子邮件时,有什么方法可以提醒我吗?

使用 Outlook、Office 365

我尝试寻找 Outlook 加载项,但很难向 Google 描述这个问题。我知道一点点 VBA,但还不足以让我开始做这件事。

标签: vbaoutlookoutlook-addin

解决方案


基本上,您必须运行一个计时器来定期运行扫描仪来检测到达您收件箱的电子邮件数量。在计时器触发的事件处理程序(通常称为Tick)中,您可以使用类的Find / FindNextRestrict方法Items

最简单和最快的方法是创建一个 VBA 宏。请参阅Office 中的 VBA 入门Outlook 文章中的使用 Visual Basic for Applications 以快速入门。

以下文章可以帮助您在所描述的查看 Outlook 项目的方法之上编写所需的算法:

要定期运行计时器,您可以使用SetTimer函数。有关示例代码,请参阅Outlook VBA - 每半小时运行一次代码。

Public Declare Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
 Public Declare Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long

 Public TimerID As Long, TimerSeconds As Single
 Dim Counter As Long

 ' Start Timer
 Sub StartTimer()
    ' Set the timer for 1 second
    TimerSeconds = 1
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
 End Sub

 ' End Timer
 Sub EndTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
 End Sub

 Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)       
   Debug.Print Now
   ' call your code here
 End Sub

推荐阅读