我想从收件箱和发件箱文件夹中收集邮件,比较他们的主题,如果匹配,则将其全部放入新的自定义文件夹中。 这是迄今为止的代码:
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来解决这个问题?
提前致谢。
答案 0 :(得分:2)
首先,不要使用多点符号,特别是在循环中 - 在进入循环之前缓存Items集合。
其次,不要只浏览文件夹中寻找匹配项的所有项目 - 使用Items.Find。
话虽如此,您可以使用MailItem.Move(OtherFolder)。如果要保留原始项目,请使用MailItem.Copy(返回新项目),然后将其移动到目标文件夹。