我在Win XP上运行Outlook 2003。我的桌面提醒已开启并且运行顺畅。
但是最近我创建了一个VBA宏,它将传入的电子邮件分类到几个不同的文件夹中(通过ThisOutlookSession中的item_add事件)。这以某种方式阻止桌面警报显示。
有没有办法手动从VBA代码调用桌面警报?也许是某种功能。
P.S:我无法通过规则对电子邮件进行排序,这不是一个选项
基本上我正在使用RegEx查找电子邮件中的6位数代码
我的代码(对不起,这是我在互联网上找到的其他代码片段的拼凑而已
Option Explicit
Private WithEvents olInboxItems As Items
Private Sub Application_Startup()
Dim objNS As NameSpace
Set objNS = Application.Session
Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items
Set objNS = Nothing
End Sub
Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
On Error Resume Next
Dim targetFolder As Outlook.MAPIFolder
Dim myName As String
Dim Reg1 As RegExp
Dim M1 As MatchCollection
Dim M As Match
Set Reg1 = New RegExp
myName = "[MyName]"
' \s* = invisible spaces
' \d* = match digits
' \w* = match alphanumeric
With Reg1
.Pattern = "\d{6}"
.Global = True
End With
If (InStr(Item.To, myName) Or InStr(Item.CC, myName)) Then ' if mail is sent or cced to me
If Reg1.test(Item.Subject) Then
Set M1 = Reg1.Execute(Item.Subject)
For Each M In M1
' M.SubMatches(1) is the (\w*) in the pattern
' use M.SubMatches(2) for the second one if you have two (\w*)
Set targetFolder = GetFolder([folderPath]) ' function that returns targetFolder
Exit For
Next
End If
If Not targetFolder Is Nothing Then
Item.Save
Item.Move targetFolder
End If
End If
End Sub
非常感谢
答案 0 :(得分:1)
Outlook对象模型不提供任何用于管理通知的内容。相反,您可以考虑开发一个加载项,而不是在哪里可以使用允许模仿buit-in行为的第三方组件。例如,查看RadDesktopAlert组件。
有关详细信息,请参阅Walkthrough: Creating Your First Application-Level Add-in for Outlook。
答案 1 :(得分:0)
发现此功能后,该规则可以在不使用VBA的情况下根据需要设置规则,以便在对宏进行排序时,根据您将传入电子邮件移至的文件夹显示警报。
https://www.howto-outlook.com/howto/newmailalert.htm
向下滚动到“配置邮件警报以监视所有[l]文件夹;而不仅仅是收件箱。”
配置邮件警报以监视所有文件夹;不只是收件箱 “管理规则和警报”按钮默认情况下,新的“新邮件桌面警报”将仅在邮件传递到收件箱时显示。这意味着,当您配置了将邮件移动到其他文件夹的规则时,通知将不会显示。
要解决此问题,您可以为每个规则添加“显示桌面警报”操作。除了令人厌烦的事实外,真正的缺点是,当您在Exchange组织中时,该规则将成为本地规则,因此仅在Outlook运行时才执行。这意味着当您在规则中添加了其他操作(例如将其转发到另一个地址)后,这些操作也将不会执行。
一个更好的解决方案是创建一个没有条件的通用规则,而只是显示桌面警报的操作。
打开“规则和警报”对话框; Outlook 2007 工具->规则和警报… Outlook 2010,Outlook 2013和Outlook 2016 File->按钮:管理规则和警报 按钮新规则… 选择“从空白规则开始”,并确认已选择“检查邮件到达时”或“对收到的邮件应用规则”。 按下一步转到“条件”屏幕。 确认没有选择任何条件,然后按Next。 将会弹出警告,指出该规则将应用于所有消息。按“是”表示正确。 选择操作“显示桌面警报”。 按完成以完成规则。 如果需要,将“显示桌面警报”规则一直移到顶部。 新邮件桌面警报规则(单击图像可放大) 您可以创建一条规则,以显示收到的每封邮件的“新邮件桌面警报”。