Outlook加载项,无法将邮件项目添加到自定义文件夹中

本文关键字:添加 项目 自定义 文件夹 加载项 Outlook | 更新日期: 2023-09-27 18:25:23

我想从收件箱和sentbox文件夹中提取邮件,比较它们的主题,如果匹配,则将其全部放入一个新的自定义文件夹中。这是迄今为止的代码:

Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)
        this.Application.ActiveExplorer().Session.GetDefaultFolder
        (Outlook.OlDefaultFolders.olFolderInbox);

//我也为sentBox文件夹做了这个

            string userName = (string)this.Application.ActiveExplorer()
                .Session.CurrentUser.Name;
            Outlook.MAPIFolder customFolder = null;
                customFolder = (Outlook.MAPIFolder)inBox.Folders.Add(userName,
                    Outlook.OlDefaultFolders.olFolderInbox);
                inBox.Folders[userName].Display();

//这是我想要放置匹配邮件的自定义文件夹

        for (int i = 1; i <= sentboxFolder.Items.Count; i++)
        {
            outboxItem =  sentboxFolder.Items[i];

            for (int a = 1; a <= inBox.Items.Count; a++)
            {
               inboxItem = inBox.Items[a];
                if ("RE: " + outboxItem.Subject == inboxItem.Subject)
                {
                    customFolder.Items.Add(inboxItem);

//在这里,我循环浏览收件箱和发件箱文件夹,如果主题匹配,我想将收件箱部分添加到自定义文件夹中。

我有3个问题:1.有没有办法把两封匹配的邮件放在一个文件夹里?2.我知道除了比较主题之外,应该有一种更聪明的方法,有人能帮我如何在这里使用会话ID吗?3.我在最后一行遇到一个异常,它无法将收件箱项目添加到自定义文件夹中,因为它不是实际的对象实例。我应该在哪里实例化mailitem来修复此问题?

提前谢谢。

Outlook加载项,无法将邮件项目添加到自定义文件夹中

首先,不要使用多点表示法,尤其是在循环中——在进入循环之前缓存Items集合。

其次,不要只是循环浏览文件夹中的所有项目来寻找匹配项——使用items.Find.

也就是说,你可以使用MailItem.Move(OtherFolder)。如果你想保留原始项目,请使用MailItem.Copy(返回新项目),然后将其移动到目标文件夹。