vba - 当电子邮件率增加时发送警报的收件箱规则
问题描述
我每天都会收到数百个自动警报(例如 CPU/内存峰值、SQL 块)。但是,通常情况下,当这些警报出现时,我无能为力/不想做;我只关心警报激增的时候,因为那是不正常的。我至少让他们分开文件夹,但这仍然让人分心,因为我必须始终注意那个未读的电子邮件号码。
当我在 N 分钟内收到超过 X 封来自 sendername 的电子邮件时,有什么方法可以提醒我吗?
使用 Outlook、Office 365
我尝试寻找 Outlook 加载项,但很难向 Google 描述这个问题。我知道一点点 VBA,但还不足以让我开始做这件事。
解决方案
基本上,您必须运行一个计时器来定期运行扫描仪来检测到达您收件箱的电子邮件数量。在计时器触发的事件处理程序(通常称为Tick
)中,您可以使用类的Find / FindNext或Restrict方法Items
。
最简单和最快的方法是创建一个 VBA 宏。请参阅Office 中的 VBA 入门和Outlook 文章中的使用 Visual Basic for Applications 以快速入门。
以下文章可以帮助您在所描述的查看 Outlook 项目的方法之上编写所需的算法:
- 如何:使用 Find 和 FindNext 方法从文件夹中检索 Outlook 邮件项目(C#、VB.NET)
- 如何:使用限制方法从文件夹中检索 Outlook 邮件项目
- 以编程方式在 Outlook 中进行高级搜索:C#、VB.NET
要定期运行计时器,您可以使用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
推荐阅读
- ruby-on-rails - translation missing:en.admin.communities.settings.payments_not_enabled Sharetribe
- r - 如何使条形图标签颜色以条形本身的颜色为条件?
- flutter - 无法在颤振中导入 url 启动器包
- azure - Azure 自定义资源提供程序长时间运行的资源创建
- python - 二维数组中的随机障碍物生成算法
- android - 使用 LiveData 的波纹效果/点击动画
- angular - 如果我重新分配一个存储 rxjs 订阅的变量,那会取消订阅吗?
- rust - 可变借用到 Mutex 内部的对象 - 如何重构?
- email - 如何在exim中自动将邮件抄送给特定收件人
- azure - 无法将服务计划连接到 vnet