Outlook 2007 - 拦截邮件删除命令

时间:2012-08-07 22:04:36

标签: outlook vsto outlook-addin outlook-2007 outlook-vba

我想将删除邮件发送到用户创建的文件夹,而不是删除的项目文件夹。

有没有办法拦截我从邮件中删除或从文件夹/收件箱中删除并将其发送到该用户定义文件夹的邮件?

我以为我可以编写一个脚本来查看已删除的邮件项目文件夹,然后将其移动到用户定义的文件夹,但之后我实际上永远无法正确删除任何内容,因为它会继续将其移回。然而,如果我在点击删除按钮后可以拦截它,我总是可以选择将消息“移动”到已删除的项目文件夹中,如果我真的想删除它。

2 个答案:

答案 0 :(得分:0)

您可以在Item (邮件,任务,日历等)上分配自定义UserProperty,以便在将其放入用户定义的{{ 1}}文件夹可以永久删除。

移动它的逻辑做用户定义的DeletedItems然后可以检查用户属性是否存在...

DeletedItems

答案 1 :(得分:0)

我以为我会看到VBA会是什么样的。它不漂亮,但它有效。

Private WithEvents olDeletedItems As items
Private WithEvents olToBeDeletedItems As items

Private Sub Application_Startup ()

Dim objNS As NameSpace
Dim Cancel As Boolean

Set objNS = Application.GetNamespace("MAPI")

Set olDeletedItems = objNS.GetDefaultFolder(olFolderDeletedItems).items
Debug.Print "Adding items to the - Deleted Items - folder will trigger olDeletedItems_ItemAdd"

Set olToBeDeletedItems = objNS.GetDefaultFolder(olFolderInbox).Folders("To be deleted").items
Debug.Print "Adding items to the - To be deleted - folder will trigger    olToBeDeletedItems_ItemAdd"

End Sub

Private Sub olDeletedItems_ItemAdd(ByVal item As Object)

Dim myNameSpace As NameSpace
Dim targetFolder As MAPIFolder

On Error GoTo notYes ' There is an error when there is nothing in SoftDelete

Debug.Print item.Subject & " - " & item.UserProperties("SoftDelete").Value
If item.UserProperties("SoftDelete").Value <> "Yes" Then

    GoTo notYes
Else

    'The item has already been soft deleted
    ' Okay to remain in the real deleted folder

End If

On Error GoTo 0

Exit Sub

notYes:
Debug.Print item.Subject & " - Either not a Yes or there is nothing in SoftDelete"

Set myNameSpace = Application.GetNamespace("MAPI")
Set targetFolder = myNameSpace.GetDefaultFolder(olFolderInbox).Folders("@To be deleted")

item.Move targetFolder

Set myNameSpace = Nothing
Set targetFolder = Nothing

End Sub

Private Sub olToBeDeletedItems_ItemAdd(ByVal item As Object)

item.UserProperties.Add("SoftDelete", olText).Value = "Yes"
item.Save

End Sub