如何在Outlook中清除vbox的发件箱,仍然有一封外发邮件

时间:2015-01-22 07:37:07

标签: vba outlook outlook-vba

我想向特定收件人“发送”邮件但不想传递。邮件在发件箱中,但我想立即删除它。当我使用命令delete时,它说它在发送之前被删除了。我不想要弹出窗口,并且在退出Outlook时还有一个警告,即仍有未发送的消息。如何清除发件箱?

Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)

Dim outApp As Outlook.Application
Dim deletedFolder As Outlook.MAPIFolder
Dim entryID As String

Set outApp = CreateObject("outlook.application")
Set deletedFolder  =outApp.GetNamespace("MAPI").GetDefaultFolder(olFolderOutbox)

If item.To = "example@mail.com" Then
    item.DeferredDeliveryTime = DateAdd("y", 99999, Now)
End If

Set deletedFolder =    outApp.GetNamespace("MAPI").GetDefaultFolder(olFolderOutbox)

If deletedFolder.Items.Count >= 0 Then
    For i = 1 To deletedFolder.Items.Count
        deletedFolder.Items(1).Delete
    Next i
End If

End Sub

1 个答案:

答案 0 :(得分:0)

Outbook文件夹包含尚未发送的消息。由于没有发送项目,因此绝对不是删除项目的正确时间和地点。相反,我建议处理ItemSend事件并添加用户属性(即稍后可以告诉您是否需要删除该消息的标记),请参阅MailItem类的UserProperties属性以获取更多信息。例如:

 Set myUserProperty = myItem.UserProperties _ 
 .Add("YourDetails", olText) 
 myUserProperty.Value = "Delete" 

然后,在“已发送邮件”文件夹的ItemAdd事件处理程序中,您可以检出用户定义的属性值,并在需要时删除已发送的邮件。请注意,默认情况下,已发送邮件的“已发送邮件”文件夹将设置为目标文件夹。但您可以通过编程方式设置自定义文件夹,请参阅SaveSentMessageFolder属性 - 一个Folder对象,该对象表示发送后将保存电子邮件副本的文件夹。