使用 Outlook 2013。有沒有辦法在 Outlook 中執行此操作?
我嘗試關閉該訊息(並且在詢問時不保存/保留),但這會在我的已刪除項目資料夾中建立一個新的未讀項目,導致它像聖誕樹一樣亮起。然後我必須手動進入該資料夾來清理草稿。
我正在尋找類似 Gmail 垃圾桶圖示的東西。一種簡單的一鍵無痛方法,可以一勞永逸地刪除該訊息。 (有時我想保存草稿 - 以防萬一 - 但更多時候我不會。)
更新:您可以在頂部的「快速存取工具列」上顯示「刪除」按鈕,這會導致訊息項目被刪除。這在您剛開始輸入新電子郵件時有效。點選刪除會銷毀強制警告後的訊息。但是(!),一旦電子郵件自動儲存(一段時間後),它就會進入草稿資料夾。此時刪除郵件會保留該郵件,因為它只會移至「已刪除郵件」。
是否有一些設定可以讓 Outlook 在建立新電子郵件時模仿 Gmail 的垃圾桶按鈕?這是一個非常簡單的用例:“我不想發送我剛開始的電子郵件,改變了主意,擺脫它,刪除它的所有痕跡。”這是微軟的另一個功能缺陷嗎?
答案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
- 自由的快速調整插件可以將所有已刪除的項目標記為自動已讀。
- 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