我设置了一些规则,可以将一些电子邮件消息移动到不同的文件夹中。我希望这仍然在通知区域显示信封,但规则向导中没有选项可以执行此操作。看起来我必须让规则“运行脚本”或“执行自定义操作”分别允许 vba 或 c/c++。
还有其他人有更好的解决方案吗?
最佳答案
您也可以不是通过使用规则来实现它,而是在代码中执行类似规则的操作。例如:
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim mai As Object
Dim strEntryId
For Each strEntryId In Split(EntryIDCollection, ",")
Set mai = Application.Session.GetItemFromID(strEntryId)
If mai.Parent = "Inbox" Then
If mai.SenderEmailAddress = "the-email-address-the-rule-applies-to" Then
mai.Move Application.GetNamespace("MAPI").GetFolderFromID("the-entry-ID-of-the-folder-you-want-to-move-the-message-to")
End If
End If
Set mai = Nothing
Next
End Sub
如何获取文件夹ID(即文件夹的entryID):
这只是一种手动方式,您可以进行递归过程,但为了简单的目的,这很好。例如,我的结构如下:
Mailbox - My_Name_Here
Inbox
The Subfolder I'm Looking For
Sent Items
...
所以我在立即窗口中输入:
? Application.GetNamespace("MAPI").Folders(1)
然后增加数字直到我得到“邮箱 - My_Name_Here”
然后,我输入:
? Application.GetNamespace("MAPI").Folders(the_number_of_my_mailbox).Folders(1)
增加数量直到我得到“收件箱”。
然后:
? Application.GetNamespace("MAPI").Folders(the_number_of_my_mailbox).Folders(the_number_of_my_Inbox).Folders(1)
增加数字直到我得到“我正在寻找的子文件夹”
然后:
? Application.GetNamespace("MAPI").Folders(the_number_of_my_mailbox).Folders(the_number_of_my_Inbox).Folders(the_number_of_the_subfolder_i_was_looking_for).EntryID
就是这样:我想将邮件移动到的文件夹的 entryID。你明白我的意思了,我敢肯定:)
关于c++ - 在邮件通知区域而不是收件箱中显示 Outlook 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/341117/