c++ - 在邮件通知区域而不是收件箱中显示 Outlook 图标

标签 c++ vba scripting outlook

我设置了一些规则,可以将一些电子邮件消息移动到不同的文件夹中。我希望这仍然在通知区域显示信封,但规则向导中没有选项可以执行此操作。看起来我必须让规则“运行脚本”或“执行自定义操作”分别允许 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/

相关文章:

c# - 沙盒 AppDomain 中的 SecurityException

用于测试性能的 C++ 单元测试(综合基准)

c++ - 将已解析序列的每个元素传递给返回规则属性类型的函数

c++ - 使用 QString 以外的其他类型作为文字

excel - 从 A :F where it indicates "This is not a date format" and paste the values in a specific column 复制行值

javascript - 用 Haxe 编写的游戏类 JS 脚本语言?

C++ header - 为什么一个程序会同时包含 iostream 和 ostream?

vba - 将 +2 添加到任何数字 (VBA)

excel - 否则,如果没有编译错误

bash - 打印包含特定字符串的两个模式之间的所有行