【问题标题】:ConversationID is `Nothing` in VSTO Application.ItemSend subVSTO Application.ItemSend sub 中的 ConversationID 为“Nothing”
【发布时间】:2018-11-22 14:44:14
【问题描述】:

我正在尝试创建一个绩效跟踪应用程序 - 基本可以计算出我回复电子邮件的速度。

我想我可能使用了错误的“已发送项目”触发事件,因为对话 ID 是 nothing,以下子 Application_ItemSend 中的一些回复:

Public Class ThisAddIn
    Public Shared ConversationThreads As Dictionary(Of String, Date)

    Private Sub Application_NewMailEx(EntryIDCollection As String) Handles Application.NewMailEx
        For Each itemID In Split(EntryIDCollection, ",")
            Dim item = Application.Session.GetItemFromID(itemID)
            If TypeName(item) = "MailItem" Then
                'is it a Tracked Email
                Dim msg As Outlook.MailItem
                msg = item
                ConversationThreads.Add(msg.ConversationID, Now())
            End If
        Next

    End Sub

    Private Sub Application_ItemSend(Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend
        If TypeName(Item) = "MailItem" Then
            'is it a Tracked Email
            Dim msg As Outlook.MailItem
            msg = Item
            For Each tRecipient As Outlook.Recipient In msg.Recipients
                If Not msg.ConversationID Is Nothing AndAlso
                    ConversationThreads.ContainsKey(msg.ConversationID) Then
                      Call OpenCloseThread(msg.ConversationID)
                End If


            Next
        End If

    End Sub

end class

我应该为此子使用不同的触发器吗?

【问题讨论】:

    标签: vb.net outlook vsto


    【解决方案1】:

    在读取ConversationID 属性之前调用msg.Save()

    【讨论】:

    • 那没有用。我和另一个内部用户之间的测试“对话”是否重要?
    • 如果您查看已发送邮件文件夹中的项目,它是否设置了 ConversationID 属性(选择邮件,单击 OuItlookSpy 功能区上的项目按钮,选择 ConversationID 属性)?
    • 是的,它与我回复的消息的对话 ID 匹配!
    • 我只能建议在 Sent Items 文件夹上使用 Items.ItemAdd 事件而不是 Application.ItemSend
    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2019-01-25
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多