在Outlook C#中的独立回复窗口中获取对话

时间:2019-08-04 22:48:38

标签: outlook vsto outlook-addin

我正在尝试在独立回复窗口中回复电子邮件时获取GetConversation()。但它显示的是对话= null。我可以通过收件箱中的电子邮件进行对话,但是当我尝试在回复同一封电子邮件时进行对话时,它不会返回任何内容。我的代码在下面。

object selectedItem  = application.ActiveInspector().CurrentItem;
Outlook.MailItem SelectedReply = selectedItem as Outlook.MailItem;
If (SelectedReply is Outlook.MailItem)
{
Outlook.Conversation conv = SelectedReply.GetConversation();
if (conv != null)
  {
    // Code here
  }
  else
  {
     MessageBox.Show("Conversation is not available.");
  }
}

我收到消息框“无法进行对话”。

任何帮助将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

如果该项目不存在对话,则

GetConversation返回 Null (在Visual Basic中为 Nothing )。在以下情况下,该项目没有对话:

  • 该项目尚未保存。可以通过用户操作或自动保存以编程方式保存项目。

  • 对于可以发送的项目(例如,邮件,约会项目或联系人项目),该项目尚未发送。

  • 已通过Windows注册表禁用了对话。

  • 该存储区不支持Conversation视图(例如,Outlook在经典的在线模式下针对Microsoft Exchange Server 2010之前的版本运行)。使用IsConversationEnabled对象的Store属性来确定商店是否支持Conversation视图。

因此,我建议至少在调用Save方法之前先调用GetConversation方法:

object selectedItem  = application.ActiveInspector().CurrentItem;
Outlook.MailItem SelectedReply = selectedItem as Outlook.MailItem;
If (SelectedReply is Outlook.MailItem)
{
    SelectedReply.Save();
    Outlook.Conversation conv = SelectedReply.GetConversation();
    if (conv != null)
    {
       // Code here
    }
    else
    {
       MessageBox.Show("Conversation is not available.");
    }
}

答案 1 :(得分:-1)

您的代码似乎正在使用ActiveInspector来获取选定的项目,但是ActiveInspector用于打开的电子邮件或回复的活动全窗口。如果要在“资源管理器”窗口(内联响应)中获得答复的句柄,则需要通过Explorer.ActiveInlineResponse属性进行访问。