我需要从我的Outlook加载项(c#+ vsto)调用Outlook的对话清理。 我在办公室的色带栏上有我的按钮,然后点击它,它需要调用当前选定邮件项目的Outlook对话清理。 这是可能的,以及如何去做?从Outlook加载项调用对话清理
0
A
回答
0
Outlook项目提供了GetConversation方法,该方法获取代表该项目所属对话的Conversation
对象。
GetConversation
返回Null
(在Visual Basic中为Nothing)如果该对象不存在对话。在下列情况下没有对象存在对话:
•该项目尚未保存。项目可以以编程方式保存,也可以通过用户操作或自动保存保存。
•对于可发送的项目(例如,邮件项目,预约项目或联系人项目),该项目尚未发送。
•会话已通过Windows注册表禁用。
•商店不支持“对话”视图(例如,Outlook对比早于Microsoft Exchange Server 2010的Microsoft Exchange版本以经典联机模式运行)。使用Store对象的IsConversationEnabled属性来确定商店是否支持对话视图。
以下代码示例假定浏览器窗口中的选定项目是邮件项目。代码示例获取与选定邮件项目关联的对话,并枚举该对话中的每个项目,显示该项目的主题。 DemoConversation
方法调用所选邮件项目的GetConversation
方法以获取关联的对话对象。 DemoConversation
然后分别调用Conversation对象的GetTable
和GetRootItems
方法分别获取Table对象和SimpleItems集合。
void DemoConversation()
{
object selectedItem =
Application.ActiveExplorer().Selection[1];
// This example uses only
// MailItem. Other item types such as
// MeetingItem and PostItem can participate
// in the conversation.
if (selectedItem is Outlook.MailItem)
{
// Cast selectedItem to MailItem.
Outlook.MailItem mailItem =
selectedItem as Outlook.MailItem;
// Determine the store of the mail item.
Outlook.Folder folder = mailItem.Parent as Outlook.Folder;
Outlook.Store store = folder.Store;
if (store.IsConversationEnabled == true)
{
// Obtain a Conversation object.
Outlook.Conversation conv = mailItem.GetConversation();
// Check for null Conversation.
if (conv != null)
{
// Obtain Table that contains rows
// for each item in the conversation.
Outlook.Table table = conv.GetTable();
Debug.WriteLine("Conversation Items Count: " +
table.GetRowCount().ToString());
Debug.WriteLine("Conversation Items from Table:");
while (!table.EndOfTable)
{
Outlook.Row nextRow = table.GetNextRow();
Debug.WriteLine(nextRow["Subject"]
+ " Modified: "
+ nextRow["LastModificationTime"]);
}
Debug.WriteLine("Conversation Items from Root:");
// Obtain root items and enumerate the conversation.
Outlook.SimpleItems simpleItems
= conv.GetRootItems();
foreach (object item in simpleItems)
{
// In this example, only enumerate MailItem type.
// Other types such as PostItem or MeetingItem
// can appear in the conversation.
if (item is Outlook.MailItem)
{
Outlook.MailItem mail = item
as Outlook.MailItem;
Outlook.Folder inFolder =
mail.Parent as Outlook.Folder;
string msg = mail.Subject
+ " in folder " + inFolder.Name;
Debug.WriteLine(msg);
}
// Call EnumerateConversation
// to access child nodes of root items.
EnumerateConversation(item, conv);
}
}
}
}
}
void EnumerateConversation(object item,
Outlook.Conversation conversation)
{
Outlook.SimpleItems items =
conversation.GetChildren(item);
if (items.Count > 0)
{
foreach (object myItem in items)
{
// In this example, only enumerate MailItem type.
// Other types such as PostItem or MeetingItem
// can appear in the conversation.
if (myItem is Outlook.MailItem)
{
Outlook.MailItem mailItem =
myItem as Outlook.MailItem;
Outlook.Folder inFolder =
mailItem.Parent as Outlook.Folder;
string msg = mailItem.Subject
+ " in folder " + inFolder.Name;
Debug.WriteLine(msg);
}
// Continue recursion.
EnumerateConversation(myItem, conversation);
}
}
}
相关问题
- 1. 在对话视图中更改Outlook中的mailitem选项从c#outlook加载项
- 2. 的Outlook 2016加载项对话框上的“加载”挂
- 3. 从Outlook加载项中的对话框API重定向
- 4. Outlook 2010加载项
- 5. Outlook加载项+ WPF
- 6. Outlook 2007加载项
- 7. 在本机Outlook加载项中创建对话框窗口
- 8. 从outlook加载项调用crm web服务
- 9. VSTO Outlook加载项:邮编COM对象
- 10. Outlook加载项代理对日历的访问
- 11. Outlook JS加载项 - 处理对象保存
- 12. Outlook对象模型 - 挂钩的谈话清理功能
- 13. 如何从Plone网站清理未使用的加载项?
- 14. Outlook加载项,当加载错误Ribbon_GetDCVisible
- 15. 加载Outlook加载项时出错
- 16. Outlook加载项加载但未显示
- 17. Outlook日历加载项
- 18. COM加载项,Outlook,ItemSend
- 19. outlook加载项未翻译
- 20. 订购Outlook COM加载项
- 21. Outlook加载项工具api
- 22. 安装Outlook加载项
- 23. Outlook 2013加载项MailItem
- 24. 缺少Outlook 2013加载项
- 25. Outlook加载项saveAsync在OWA
- 26. Outlook加载项教程?
- 27. 如何清理Visual Studio工具(VSTO)2010 Outlook加载项后完成
- 28. Outlook 2007加载项在Outlook 2013上无法加载
- 29. 从VBA调用COM加载项选项
- 30. Outlook加载项的清单和安装程序文件夹VSTO
尤金,感谢您回复我的问题。为了使用上述方法,我们必须将每个消息体与表中所有其他消息的主体进行比较。除此之外,我发现Outlook有不同情况下的正文文本(在某些邮件正文中有'mailto:',而电子邮件地址被'['括号括起来,而其他地方使用'<'括号“,在某些地方秒数存在于时间字段)。因此,只调用Outlook的内置对话清除功能可能会更好,而不是重新发明轮子。 –