作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法循环遍历所有邮件ConversationID
,EntryID
、GetConversation
、ConversationIndex
并根据相同的id号进行分组,这样就可以像outlooks查找相关
功能一样打印出来。
作为outlook.GetItemFromID(id)
仅适用于 EntryID
,它对于所有邮件都是唯一的。
我尝试循环遍历所有邮件并找到各自的 ID 号,并匹配是否有任何邮件具有相同的 ID 号。但所有的 id 似乎都是唯一的。
最佳答案
您可以使用GetConversation MailItem
类的方法,获取 Conversation代表该项目所属对话的对象。
GetConversation 将返回 Null
(在 Visual Basic 中为 Nothing
)。在以下情况下,不存在某个项目的对话:
对话
View (例如,Outlook 在经典在线模式下针对早于 Microsoft Exchange Server 2010 的 Microsoft Exchange 版本运行)。使用IsConversationEnabled Store
对象的属性来确定商店是否支持对话 View 。以下 C# 示例代码(抱歉,我不熟悉 python,但 Outlook 对象模型对于所有编程语言都是通用的)假设资源管理器窗口中的所选项目是邮件项目。该代码示例获取与所选邮件项目关联的对话,并枚举该对话中的每个项目,显示该项目的主题。
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, enumerate only 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, enumerate only 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);
}
}
}
关于python - 使用 win32com 在 Outlook 中按对话线程对邮件进行分类/分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56949079/
我是一名优秀的程序员,十分优秀!