C# Outlook会话历史记录

C# Outlook会话历史记录,c#,outlook,office-interop,C#,Outlook,Office Interop,我正在研究创建一个outlook插件,我可以从对话历史文件夹中选择一个对话,然后单击一个按钮将其保存到一个文件夹中。有没有人能告诉我如何选择对话历史记录文件夹,如何通过C#运行搜索,以及如何选择对话。public static List GetFolders() public static List<Outlook.MAPIFolder> GetFolders() { List<Outlook.MAPIFolder> _list = ne

我正在研究创建一个outlook插件,我可以从对话历史文件夹中选择一个对话,然后单击一个按钮将其保存到一个文件夹中。有没有人能告诉我如何选择对话历史记录文件夹,如何通过C#运行搜索,以及如何选择对话。

public static List GetFolders()
    public static List<Outlook.MAPIFolder> GetFolders()
    {

        List<Outlook.MAPIFolder> _list = new List<Outlook.MAPIFolder>();

        Outlook.MAPIFolder root = OutlookApplication.Session.DefaultStore.GetRootFolder();


        foreach (Outlook.MAPIFolder folder in root.Folders)
        {
            _list.Add(folder);
        }

        return _list;
    }

    public static Outlook.MAPIFolder GetFolderByEntryId(string entryId)
    {
        List<Outlook.MAPIFolder> folders = GetFolders();
        return folders.Where(x => x.EntryID == entryId).FirstOrDefault();
    }

    public static Outlook.MAPIFolder GetFolderByName(string folderName)
    {
        List<Outlook.MAPIFolder> folders = GetFolders();
        return folders.Where(x => x.Name == folderName).FirstOrDefault();
    }
{ 列表_List=新列表(); Outlook.MapipFolder root=OutlookApplication.Session.DefaultStore.GetRootFolder(); foreach(根文件夹中的Outlook.MAPIFolder文件夹) { _列表。添加(文件夹); } 返回列表; } 公共静态Outlook.MAPIFolder GetFolderByEntryId(字符串entryId) { List folders=GetFolders(); 返回文件夹。其中(x=>x.EntryID==EntryID).FirstOrDefault(); } 公用静态Outlook.MAPIFolder GetFolderByName(字符串folderName) { List folders=GetFolders(); 返回folders.Where(x=>x.Name==folderName).FirstOrDefault(); }

public静态列表GetSelectedItem()
{
列表_List=新列表();
Outlook.Selection-outlookSelection=OutlookApplication.ActiveExplorer().Selection;
for(int i=1;i
此外,在使用下面的“我的方法”时,请确保使用Global.OutlookApplication或任何调用加载项的应用程序。从中返回邮件对象列表,因此只需将其格式化为您希望显示的每个字段的任何数据源即可。还可以将此注释放入答案中。发布解决方案可以封装任何需要它的人。因为微软文档库提供了一种非常迂回的处理方式。
    public static List<Outlook.MailItem> GetSelectedItem()
    {
        List<Outlook.MailItem> _list = new List<Outlook.MailItem>();

        Outlook.Selection outlookSelection = OutlookApplication.ActiveExplorer().Selection;

        for (int i = 1; i < outlookSelection.Count; i++)
        {
            Outlook.MailItem mailItem = (Outlook.MailItem)outlookSelection[i];

            _list.Add(mailItem);
        }

        return _list;
    }

    public static List<Outlook.MailItem> GetMailItems(string FolderName)
    {
        List<Outlook.MailItem> _list = new List<Outlook.MailItem>();

        Outlook.MAPIFolder theFolder = OutlookApplication.Session.GetFolderFromID(GetFolderByName(FolderName).EntryID);

        foreach (Object item in theFolder.Items)
        {
            Outlook.MailItem mailItem = (Outlook.MailItem)item;

            if (mailItem != null)
            {
                _list.Add(mailItem);
            }
        }

        return _list;

    }