【问题标题】:This method can't be used with an inline response mail item此方法不能与内联响应邮件项目一起使用
【发布时间】:2022-05-01 13:18:13
【问题描述】:

我有一个 Outlook 插件,它可以监控已发送的项目并将特定的电子邮件移动到一个文件夹中。我不确定发生了什么变化,但是当我发送电子邮件时,我收到了这个错误:

This method can't be used with an inline response mail item.

这是我的代码。当 IsSentItem 为 true 时,移动邮件项目 (Mail.Move(TargetFolder)) 失败:

Private Sub MoveMailToFolder(ByVal TargetFolder As Outlook.Folder, ByVal Mail As Outlook.MailItem, ByVal IsSentItem As Boolean)
        Try
            If Mail.ReadReceiptRequested Then
                ''continue /keep original mail as is
            Else
                'Mail.UnRead = False
                Mail.UnRead = True
            End If

            If IsSentItem Then
                Mail.UnRead = False
                Mail.Move(TargetFolder)
            Else
                Mail.Move(TargetFolder)
                'Mail.SaveSentMessageFolder = TargetFolder
            End If
        Catch ex As Exception
            MsgBox(ex.Message.ToString & " " & ex.HResult.ToString & " " & ex.GetBaseException.ToString)
        Finally
            ''
        End Try
    End Sub

您能建议如何解决这个问题吗?

【问题讨论】:

  • 能否指出错误信息中出现的1003是哪一行?
  • @mcutrin 它是以下代码中的 Mail.Move(TargetFolder)If IsSentItem Then Mail.UnRead = False Mail.Move(TargetFolder) Else

标签: vb.net vsto outlook-addin


【解决方案1】:

是的,需要先关闭内联响应。您还需要避免从内联响应或MailItem 事件处理程序中调用类似的方法。在后一种情况下,您可以启动一个计时器(使用 Forms 命名空间中的 Timer 类,而不是 Threading,因为它在主线程上触发)并在计时器事件处理程序中调用类似您的代码(当您MailItem 事件处理程序)。

要关闭内联响应,您可以尝试使用Accessibility API 模拟单击​​“放弃”按钮,或者,如果使用Redemption(我是它的作者)是一个选项,它的SafeExplorer 对象 -它暴露了ActiveInlineResponseDiscard 方法:

set sExplorer = CreateObject("Redemption.SafeExplorer")
sExplorer.Item = Application.ActiveExplorer
sExplorer.ActiveInlineResponseDiscard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2014-01-21
    • 2021-02-27
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多