删除正在 Outlook 中编辑的新电子邮件草稿

删除正在 Outlook 中编辑的新电子邮件草稿

使用 Outlook 2013。当您撰写新电子邮件时,通常有一种快速删除它的方法,以防您不再想发送该电子邮件。有没有办法在 Outlook 中执行此操作?

我尝试关闭该消息(而不是在被要求时保存/保留),但这会在已删除邮件文件夹中创建一个新的未读邮件,导致它像圣诞树一样亮起来。然后我必须手动进入该文件夹来清理草稿。

我正在寻找类似 Gmail 垃圾桶图标的东西。只需单击一下,即可一劳永逸地删除邮件。(有时我想保存草稿 - 以防万一 - 但更多时候我不会这样做。)

更新:您可以在顶部的“快速访问工具栏”上显示“删除”按钮,这将导致删除邮件项。这在您刚开始输入新电子邮件时有效。单击删除会在强制警告后销毁该邮件。但是(!),一旦电子邮件自动保存(一段时间后),它就会进入草稿文件夹。此时删除该邮件会保留该邮件,因为它只是被移到已删除邮件中。

是否有某种设置可以让 Outlook 在创建新电子邮件时模仿 Gmail 的垃圾桶按钮?这是一个非常简单的用例:“我不想发送我刚开始的电子邮件,改变主意,删除它,抹去它的所有痕迹。”这是微软的另一个功能缺陷吗?

答案1

  1. 您可以编写 VBA 脚本来执行类似以下操作丢弃将消息标记为已读并将其删除删除的项目. 之后,在消息窗口上放置运行宏的按钮(使用自定义功能区 -> 宏)。

像这样:

Sub Discard()
    On Error Resume Next
    Dim objItem As MailItem

    Set objInspector = ActiveInspector
    If Not objInspector Is Nothing Then
        Set objItem = objInspector.CurrentItem
        If Not objItem Is Nothing And Not objItem.Sent Then
            objItem.UnRead = False
            objItem.Delete
        End If
    End If
End Sub
  1. 自由的快速调整插件可以自动将所有已删除的项目标记为已读。
  2. SHIFT+DEL删除消息列表中选定的消息而不将其放置在它们上面删除的项目

答案2

我找到了一种方法,可以自动将添加到已删除文件夹的项目标记为已读。使用此解决方案,无需添加链接到宏的按钮。

只需在 VBA 编辑器中将以下代码添加到“ThisOutlookSession”即可:

Private WithEvents deletedItems As Outlook.Items

Private Sub Application_Startup()
    Dim olApp As Outlook.Application
    Dim objNS As Outlook.NameSpace
    Set olApp = Outlook.Application
    Set objNS = olApp.GetNamespace("MAPI")
    'Default folder for deleted items
    Set deletedItems = objNS.GetDefaultFolder(olFolderDeletedItems).Items
End Sub

Private Sub deletedItems_ItemAdd(ByVal Item As Object)
    Dim deletedEmail As Outlook.MailItem
    If TypeName(Item) = "MailItem" Then
        Set deletedEmail = Item
        deletedEmail.UnRead = False
    End If
End Sub

您需要重新启动 Outlook 才能使其正常工作。

请注意,它将适用于所有已删除的电子邮件,而不仅仅是草稿。

答案3

当前版本的 Outlook 在窗口右边缘的中间有一堆操作按钮,其中有一个红色的 X 表示放弃。

我同意 Outlook 的用户界面非常糟糕且不直观,但没有必要仅仅为了丢弃草稿消息而创建宏。

答案4

我最终使用的版本有代码可以在删除后从“已删除邮件”中删除邮件项目。

Sub Discard()
    On Error Resume Next
    Dim objItem As MailItem

    Set objInspector = ActiveInspector
    If Not objInspector Is Nothing Then
        Set objItem = objInspector.CurrentItem
        If Not objItem Is Nothing And Not objItem.Sent Then
            'no EntryID exists for freshly created mail, but does for a draft
            MyEntryId = objItem.EntryID
            objItem.UnRead = False
            objItem.Delete
            If Not MyEntryId = "" Then
                Dim oDeletedItems As Outlook.Folder
                'Obtain a reference to deleted items folder
                Set oDeletedItems = Application.Session.GetDefaultFolder(olFolderDeletedItems)
                'Delete last item from Deleted Items
                oDeletedItems.Items.Item(oDeletedItems.Items.Count).Delete
            End If
        End If
    End If
End Sub

相关内容