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

问题描述:

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

在它说的调试检查parentFolder.Folders“枚举没有结果”的时候

我不知道我是否应该在方法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; 
    } 
+1

你可以清理你的代码有点用'使用Microsoft.Office.Interop;' – 2014-12-04 21:45:19

+0

[热到移动项目中OutLook](http://msdn.microsoft.com/en-us/library/ms268996.aspx) – MethodMan 2014-12-04 21:52:53

+0

在哪一行是抛出的异常? – Quackmatic 2014-12-04 21:57:57

我已经找到了答案,我的问题:

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

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

张贴这作为一个答案

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