Как получить последний ответ в беседе Outlook? Например, следующий код:
Outlook.MailItem item = Items.GetLast();
MessageBox.Show(item.Body);
отобразит все письмо, а не только последний ответ.
Как получить последний ответ в беседе Outlook? Например, следующий код:
Outlook.MailItem item = Items.GetLast();
MessageBox.Show(item.Body);
отобразит все письмо, а не только последний ответ.
В следующем примере показано, как получать и отображать почтовые элементы в беседе.
void DemoConversation()
{
object selectedItem = Application.ActiveExplorer().Selection[1];
// For this example, you will work only with
//MailItem. Other item types such as
//MeetingItem and PostItem can participate
//in Conversation.
if (selectedItem is Outlook.MailItem)
{
// Cast selectedItem to MailItem.
Outlook.MailItem mailItem = selectedItem as Outlook.MailItem;
// Determine store of mailItem.
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 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 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 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 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);
}
}
}
В примере кода примера мы получаем выбранный объект MailItem
, а затем определяем хранилище объекта MailItem
, используя свойство Store
объекта Folder
. Затем DemoConversation проверяет, истинно ли свойство IsConversationEnabled
; если это правда, пример кода получает объект Conversation
с помощью метода GetConversation
. Если объект Conversation
не является нулевой ссылкой, пример получает связанный объект Table
, содержащий каждый элемент диалога, с помощью метода GetTable
. Затем пример перечисляет каждый элемент в Table
и вызывает EnumerateConversation
для каждого элемента для доступа к дочерним узлам каждого элемента. EnumerateConversation
берет объект Conversation
и получает дочерние узлы с помощью метода GetChildren(Object)
. EnumerateConversation
вызывается рекурсивно до тех пор, пока не останется дочерних узлов. Затем каждый элемент беседы отображается пользователю.
COMMENT NUMBER #2 _____ From: Someone Sent: Date To: Somebody Subject: RE: COMMENT NUMBER #1 This is the text from first comment.
Мне не нужна вторая часть (это в основном первый комментарий). ).
- person Damian-Teodor Beleș; 06.07.2018