删除对会议邀请的回复

Posted

技术标签:

【中文标题】删除对会议邀请的回复【英文标题】:Delete response to meeting invite 【发布时间】:2022-01-12 20:20:45 【问题描述】:

我有以下代码可以从收件箱中永久删除邮件。

但是,当回复会议邀请时,请不要删除此人已接受会议。

当我单击该邮件并运行此代码时,它不会删除吗?

Sub PermDelete(Item As Outlook.MailItem)
    ' First set a property to find it again later
    Item.UserProperties.Add "Deleted", olText
    Item.Save
    Item.Delete
    
    'Now go through the deleted folder, search for the property and delete item
    Dim objDeletedFolder As Outlook.Folder
    Dim objItem As Object
    Dim objProperty As Variant
    
    Set objDeletedFolder = Application.GetNamespace("MAPI"). _
      GetDefaultFolder(olFolderDeletedItems)
    For Each objItem In objDeletedFolder.items
        Set objProperty = objItem.UserProperties.Find("Deleted")
        If TypeName(objProperty) <> "Nothing" Then
            objItem.Delete
        End If
    Next
    
End Sub

【问题讨论】:

这能回答你的问题吗? When is a MailItem not a MailItem? 如果声明为对象不充分,响应对象是否与邮件项在同一个收件箱中? 编辑问题以添加将项目传递给PermDelete的代码。 我在 Outlook 中使用的代码是我使用 Niton 的唯一代码。 回到起点。编辑问题以描述如何成功删除邮件项到达PermDelete 【参考方案1】:

在代码中,您的函数仅接受 MailItem 类的实例。但是 Outlook 文件夹可能包含不同类型的项目 - 约会、文档、便笺等。为了在运行时区分它们,您可以使用以下构造:

Dim obj As Object

If TypeName(obj) = "MailItem" Then
  ' your code for mail items here
End If

因此,您需要通过以下方式声明函数(如果您不需要对不同类型的项目执行单独的操作):

Sub PermDelete(Item As Object)
' First set a property to find it again later
Item.UserProperties.Add "Deleted", olText
Item.Save
Item.Delete

'Now go through the deleted folder, search for the property and delete item
Dim objDeletedFolder As Outlook.Folder
Dim objItem As Object
Dim objProperty As Variant

Set objDeletedFolder = Application.GetNamespace("MAPI"). _
  GetDefaultFolder(olFolderDeletedItems)
For Each objItem In objDeletedFolder.items
    Set objProperty = objItem.UserProperties.Find("Deleted")
    If TypeName(objProperty) <> "Nothing" Then
        objItem.Delete
    End If
Next

End Sub

【讨论】:

感谢尤金,我试过了,因为我真的不在乎它是什么项目类型,但这仍然不起作用。不幸的是,日历响应没有被删除。【参考方案2】:

Item 设置为通用Object

所选项目的示例

Option Explicit
Public Sub Example()
    Dim obj As Object
    
    Set obj = ActiveExplorer.Selection.Item(1)
        obj.Delete

End Sub

【讨论】:

【参考方案3】:

要运行具有(Item As Outlook.MailItem) 之类参数的代码,您需要在本例中传递 Item 的信息。

您不能通过按钮运行此类代码。

您可以通过一个按钮或 F8 运行 Sub delItemPermanently() 来单步执行。

Option Explicit

Sub delItemPermanently()
    ' Select a single item
    ' This line passes the item to PermDelete
    PermDelete ActiveExplorer.Selection(1)
End Sub


Sub PermDelete(Item As Object)

    ' Notice Object not Mailitem
    ' This will accommodate mailitems as well
    
    ...

End Sub

【讨论】:

效果很好,非常感谢 Niton,我很感激。

以上是关于删除对会议邀请的回复的主要内容,如果未能解决你的问题,请参考以下文章

如何在Bluemix Node-Red Application中发送会议邀请(日历)[关闭]

outlook会议邀请添加收件人

怎么开腾讯视频会议

腾讯视频会议怎么用

使用收件箱中的会议邀请

自动接受会议邀请