0

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

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

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

            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 来解决这个问题?

提前致谢。

4

1 回答 1

2

首先,不要使用多点符号,尤其是在循环中 - 在进入循环之前缓存 Items 集合。

其次,不要只遍历文件夹中的所有项目来寻找匹配项 - 使用 Items.Find。

话虽如此,您可以使用 MailItem.Move(OtherFolder) 。如果要保留原始项目,请使用 MailItem.Copy(返回新项目),然后将其移动到目标文件夹。

于 2013-07-30T14:16:04.730 回答