Vb.net MailItem.Delete拒绝删除已删除邮件文件夹中的邮件
不确定以下代码为什么没有从Vb.net MailItem.Delete拒绝删除已删除邮件文件夹中的邮件,vb.net,mailitem,Vb.net,Mailitem,不确定以下代码为什么没有从已删除邮件文件夹中永久删除邮件 MailItem当然会在Deleted Items文件夹中结束,但是Delete似乎什么也没做。放置第二个Delete会导致异常,正如您所期望的,因为它不在那里 我可以通过Outlook手动永久删除邮件项目 代码: 要永久删除邮件项目,您必须在已删除文件夹中的项目中循环 要执行此操作,请查看以下代码: Dim oApp As New Outlook.Application Dim oMapi As Outlook.NameSpace =
已删除邮件
文件夹中永久删除邮件
MailItem
当然会在Deleted Items
文件夹中结束,但是Delete
似乎什么也没做。放置第二个Delete
会导致异常,正如您所期望的,因为它不在那里
我可以通过Outlook手动永久删除邮件项目
代码:
要永久删除
邮件项目
,您必须在已删除
文件夹中的项目
中循环
要执行此操作,请查看以下代码:
Dim oApp As New Outlook.Application
Dim oMapi As Outlook.NameSpace = oApp.GetNamespace("MAPI")
Dim oFolders As Outlook.Folders = oMapi.Folders
Dim oFolder As Outlook.MAPIFolder = oFolders(oMapi.DefaultStore.DisplayName).Folders("Deleted Items")
Dim oMailItem As Outlook.MailItem = CType(oApp.Session.OpenSharedItem("C:\sometestmail.msg"), Outlook.MailItem)
oMailItem.UserProperties.Add("DeleteMe", Outlook.OlUserPropertyType.olText)
oMailItem.Move(oFolder)
oMailItem = Nothing
For Each item As Outlook.MailItem In oFolder.Items
Dim oProperty As Outlook.UserProperty = item.UserProperties.Find("DeleteMe")
If oProperty IsNot Nothing Then
item.Delete()
End If
Next
我的代码将与您的代码不同,因为我已将选项严格设置为。我建议你也这样做。从长远来看,这将有所帮助
请注意,我正在将UserProperty
设置为MailItem
,然后将其移动到Deleted
文件夹。这将有助于识别要永久删除的单个邮件项。如果要永久删除Deleted
文件夹中的所有邮件
,则需要以下代码:
Dim oApp As New Outlook.Application
Dim oMapi As Outlook.NameSpace = oApp.GetNamespace("MAPI")
Dim oFolders As Outlook.Folders = oMapi.Folders
Dim oFolder As Outlook.MAPIFolder = oFolders(oMapi.DefaultStore.DisplayName).Folders("Deleted Items")
Dim oMailItem As Outlook.MailItem = CType(oApp.Session.OpenSharedItem("C:\sometestmail.msg"), Outlook.MailItem)
oMailItem.Move(oFolder)
oMailItem = Nothing
For i = oFolder.Items.Count To 1 Step -1
CType(oFolder.Items(i), Outlook.MailItem).Delete()
Next
要使其正常工作,您需要向后遍历已删除的文件夹。查看文件,其中说明:
Delete方法删除集合中的单个项。若要删除文件夹的“项目”集合中的所有项目,必须从文件夹中的最后一个项目开始删除每个项目。例如,在文件夹AllItems的items集合中,如果文件夹中有n个项目,则从AllItems.item(n)开始删除该项目,每次递减索引,直到删除AllItems.item(1)
要永久删除邮件项目
,您必须在已删除
文件夹中的项目
中循环
要执行此操作,请查看以下代码:
Dim oApp As New Outlook.Application
Dim oMapi As Outlook.NameSpace = oApp.GetNamespace("MAPI")
Dim oFolders As Outlook.Folders = oMapi.Folders
Dim oFolder As Outlook.MAPIFolder = oFolders(oMapi.DefaultStore.DisplayName).Folders("Deleted Items")
Dim oMailItem As Outlook.MailItem = CType(oApp.Session.OpenSharedItem("C:\sometestmail.msg"), Outlook.MailItem)
oMailItem.UserProperties.Add("DeleteMe", Outlook.OlUserPropertyType.olText)
oMailItem.Move(oFolder)
oMailItem = Nothing
For Each item As Outlook.MailItem In oFolder.Items
Dim oProperty As Outlook.UserProperty = item.UserProperties.Find("DeleteMe")
If oProperty IsNot Nothing Then
item.Delete()
End If
Next
我的代码将与您的代码不同,因为我已将选项严格设置为。我建议你也这样做。从长远来看,这将有所帮助
请注意,我正在将UserProperty
设置为MailItem
,然后将其移动到Deleted
文件夹。这将有助于识别要永久删除的单个邮件项。如果要永久删除Deleted
文件夹中的所有邮件
,则需要以下代码:
Dim oApp As New Outlook.Application
Dim oMapi As Outlook.NameSpace = oApp.GetNamespace("MAPI")
Dim oFolders As Outlook.Folders = oMapi.Folders
Dim oFolder As Outlook.MAPIFolder = oFolders(oMapi.DefaultStore.DisplayName).Folders("Deleted Items")
Dim oMailItem As Outlook.MailItem = CType(oApp.Session.OpenSharedItem("C:\sometestmail.msg"), Outlook.MailItem)
oMailItem.Move(oFolder)
oMailItem = Nothing
For i = oFolder.Items.Count To 1 Step -1
CType(oFolder.Items(i), Outlook.MailItem).Delete()
Next
要使其正常工作,您需要向后遍历已删除的文件夹。查看文件,其中说明:
Delete方法删除集合中的单个项。若要删除文件夹的“项目”集合中的所有项目,必须从文件夹中的最后一个项目开始删除每个项目。例如,在文件夹AllItems的items集合中,如果文件夹中有n个项目,则从AllItems.item(n)开始删除该项目,每次递减索引,直到删除AllItems.item(1)
可能是因为delete就是这么做的。。。将其移动到已删除文件夹。如果outlook设置为关闭时删除。。当你关上它时,它们就会消失。否则,它们将留在那里。但您可能希望检查此链接或此链接,因为这可能是delete所做的。。。将其移动到已删除文件夹。如果outlook设置为关闭时删除。。当你关上它时,它们就会消失。否则,它们将留在那里。但您可能需要检查此链接或此链接