2012-03-07 73 views
1

因爲幾天我試圖通過c#重命名發送的郵件文件夾,刪除的元素和收件箱文件夾。重命名Outlook中的文件夾PST文件

我tryed是這樣的:

List<Outlook.MailItem> mailItems = new List<Outlook.MailItem>(); 
      Outlook.Application app = new Outlook.Application(); 
      Outlook.NameSpace outlookNs = app.GetNamespace("MAPI"); 
      // Add PST file (Outlook Data File) to Default Profile 
      outlookNs.AddStore(pstFilePath); 
      Outlook.MAPIFolder rootFolder = outlookNs.Stores[pstName].GetRootFolder(); 

      Outlook.Folders subFolders = rootFolder.Folders; 

    foreach (Outlook.Folder folder in subFolders) 
      { 

       folder.Name = (folder.Name == "deleted Elements"?"deleted":folder.Name); 
} 

但沒有成功。我總是得到我沒有權限更改名稱的例外。其他自定義創建的文件夾我可以重命名沒有任何問題。

解鎖文件夾有什麼要做嗎? 還是有其他可能性來訪問文件夾?

非常感謝

編輯:該Expetion是:您沒有權限。

+0

請提供有關異常的文檔。你的布爾賦值語句沒有什麼意義。 – 2012-03-07 12:44:07

+0

我在Outlook 2010中尋找相同的選項,但沒有運氣。顯然這沒有選擇。據我瞭解,較早版本的Outlook支持重命名默認文件夾。我會歡迎任何想法。 – 2014-04-14 21:09:53

回答

1
public string RenameFolder(string name, string folderid) 
    { 
     Outlook.Application app = new Outlook.Application(); 
     Outlook.NameSpace ns = null; 
     Outlook.Folder folder = null; 
     string n= null; 

     try 
     { 
      ns = app.GetNamespace("MAPI"); 
      folder = ns.GetFolderFromID(folderid) as Outlook.Folder; 
      n=folder.Name; 
      folder.Name = (folder.Name = name) ; 
      return n + " has been successfully changed to " + folder.Name; 
     } 
     catch (System.Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      if (app != null) 
      { 
       System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app); 
      } 

      if (folder != null) 
      { 
       System.Runtime.InteropServices.Marshal.FinalReleaseComObject(folder); 
      } 

      if (ns != null) 
      { 
       System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ns); 
      } 
     } 
    } 

此代碼工作me..when我運行administator模式的Visual Studio ..

+0

您能否介紹一下雙文件夾重命名的必要性? 'folder.Name =(folder.Name = name);' – 2018-01-15 11:28:15