【问题标题】:How to detect when an email is moved among a particular set of folders?如何检测电子邮件何时在一组特定文件夹中移动?
【发布时间】:2018-11-24 12:54:36
【问题描述】:

当电子邮件被拖入多个受监控文件夹之一时,我会向发件人发送回复。

我为每个受监控的文件夹使用ItemAdd Events,当一个项目(在我的例子中是电子邮件)添加到它时执行。该程序提取主题行和发件人的电子邮件地址,然后发送响应。

当电子邮件最初被错误分类并拖入错误的受监控文件夹时。我的程序需要能够向其电子邮件被错误分类的发件人发出更正电子邮件。

我的程序需要知道何时将电子邮件从受监控的文件夹拖到另一个受监控的文件夹,而不是从收件箱中拖出电子邮件的典型情况。

想法1:

ItemRemove Events 从文件夹中删除项目时执行。与 ItemAdd 事件不同,它不会将删除的项目作为参数传递。
我的想法是存储最近删除的项目,然后将其与执行 ItemAdd 事件时添加到另一个受监视文件夹的项目进行比较。
如果两项相同,则表示邮件是直接从一项拖到另一项的。
ItemRemoved 事件缺少 Item 参数,因此无法获取已删除的电子邮件。

想法 2

在执行 ItemRemoved 事件时设置一个标志并评估 ItemAdd 事件的执行。
如果在运行 ItemAdd 时设置了标志,程序将知道一个项目刚刚从受监视文件夹中删除并添加到另一个受监视文件夹。
但是,如果将项目直接从具有 ItemRemoved 事件的文件夹拖到具有 ItemAdd 事件的文件夹中,只会执行目标文件夹的 ItemAdd 事件

【问题讨论】:

标签: vba outlook outlook-2010


【解决方案1】:

您是否考虑过使用 UserProperties?您可以将自定义用户属性值设置为要添加到的文件夹,还可以查看该属性以查看它是否被移动到新的(受监控的)文件夹。这是一个例子:

Sub check_last_monitored_folder(myItem As Object, newFolderName As String)

    Dim prop As UserProperty
    Set prop = myItem.UserProperties.Find("LastMonitoredFolder")

    If prop Is Nothing Then
        Debug.Print "Added to " & newFolderName & " folder"
        Set prop = myItem.UserProperties.Add("LastMonitoredFolder", olCombination)
        prop.Value = newFolderName
    Else
        Debug.Print "Moved from " & prop.Value & " folder to " & newFolderName
        prop.Value = newFolderName
    End If

End Sub

【讨论】:

    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2022-08-22
    • 2021-12-03
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多