C#展望;创建文件夹后无法移动电子邮件

时间:2014-12-04 21:33:39

标签: c# email outlook vsto directory

我的应用程序应该发送一些电子邮件到某个目的地。在该操作之后,我想自动将发送的邮件移动到特定文件夹(基于邮件附件中的文档类型)。如果文件夹不存在,则程序必须创建它,然后将邮件移动到新创建的文件夹。问题是,在我创建一个新文件夹并首次将邮件移动到它之后,当我发送了应该移动到所述文件夹的邮件时,程序没有看到该文件夹​​。事实上,文件夹方法根本不会返回任何文件夹。 坦率地说,我的想法是错误的。

在检入调试器时,它表示parentFolder.Folders" Enumeration没有产生任何结果"

我不确定在createFolder方法中创建文件夹后是否应该做更多的事情(例如,更新文件夹列表...)

这是我的代码:

    public void moveEmails(string itemType, Boolean itemSent, Outlook.MailItem objMail)
    {
        Outlook.MAPIFolder folderParent = objMail.Parent as Outlook.MAPIFolder;
        Outlook.Folders folders;
        Boolean notMoved = true;

        objMail.UserProperties.Add("TransferredBy", Outlook.OlUserPropertyType.olText, true, Outlook.OlUserPropertyType.olText);
        objMail.UserProperties["TransferredBy"].Value = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        objMail.Save();


        if (folderParent.Name != "Inbox")
            folderParent = digForInbox(folderParent);

        folders = folderParent.Folders;

        if (!itemSent)
            itemType = "NOT DELIVERED";

        foreach (Outlook.MAPIFolder folder in folders)
        {
            if (folder.Name == itemType)
            {
                objMail.Move(folder);
                notMoved = false;
            }
        }
        if (notMoved)
            createFolder(itemType,objMail, folderParent);
    }

    public void createFolder(string itemType, Outlook.MailItem objMail, Outlook.MAPIFolder folderParent)
    {
        Outlook.MAPIFolder folderNew;
        folderNew = folderParent.Folders.Add( itemType, Outlook.OlDefaultFolders.olFolderInbox ) as Outlook.MAPIFolder;
        objMail.Move(folderNew);
    }
    private Outlook.MAPIFolder digForInbox(Outlook.MAPIFolder folder)
    {
        Boolean isNotInbox = true;
        while(isNotInbox)
        {
            if(folder.Name != "Inbox")
            {
                folder = folder.Parent as Outlook.MAPIFolder;
            }
            else
            {
                isNotInbox = false;
            }
        }
        return folder;
    }

2 个答案:

答案 0 :(得分:1)

我找到了问题的答案:

https://social.msdn.microsoft.com/forums/windows/en-us/180c000c-524a-45dd-88fe-88b470be3597/accessing-subfolders-within-shared-mailbox?forum=outlookdev

问题类似于链接中的问题。我没有想到,因为我的邮箱主要是共享的邮箱,它会以任何其他方式影响它,而不是性能(由于连接到交换服务器)

将此作为回答发布

答案 1 :(得分:0)

我建议使用MailItem类的SaveSentMessageFolder属性。它允许设置一个Folder对象,该对象表示发送后将保存电子邮件副本的文件夹。您还可以找到以下文章: