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

本文关键字:移动 电子邮件 文件夹 展望 创建 | 更新日期: 2023-09-27 18:33:14

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

签入调试器时,它说 parentFolder.Folder "枚举未产生任何结果"

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

这是我的代码:

    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;
    }

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

我找到了问题的答案:

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

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

将此作为答案发布

我建议使用 MailItem 类的 SaveSentMessageFolder 属性。它允许设置一个 Folder 对象,该对象表示发送后将保存电子邮件副本的文件夹。此外,您可能会发现以下文章很有帮助:

  • 如何:在使用 C# 或 VB.NET 发送之前更改 Outlook 电子邮件
  • 如何:在 Outlook 中创建新文件夹