【问题标题】:Outlook add-in, cannot add mailitem into a custom folderOutlook 加载项,无法将 mailitem 添加到自定义文件夹中
【发布时间】:2013-07-30 22:16:04
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: c# .net ms-office outlook-addin


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      相关资源
      最近更新 更多