在Outlook C#中的独立回复窗口中进行对话



我正在尝试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.");
  }
}

我得到消息框"对话不可用"。

任何帮助将不胜感激。

谢谢。

getConversation返回 null (在Visual Basic中 nothing basic basic中的Nothing (,如果该项目不存在对话。在以下情况下,没有对项目的对话:

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

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

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

  • 该商店不支持Conversation视图(例如,Outlook以经典的在线模式与Microsoft Exchange Server更早的Microsoft Exchange版本运行。使用Store对象的IsConversationEnabled属性确定商店是否支持Conversation视图。

所以,我建议至少在调用GetConversation方法之前调用Save方法:

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.");
    }
}

似乎您的代码正在使用ActiveInspector来获取所选项目,但是ActiveInspector用于打开电子邮件或答复的主动全窗口。如果您想在"探索器"窗口中的回复(Inline响应(中获取A hange,则需要通过Explorer.ActiveInlinerSponse属性访问它。

最新更新