2012-03-07 3 views
1

С тех пор как несколько дней я пытаюсь переименовать отправленную почтовую папку, удаленные элементы и папку «Входящие» с помощью C#.Переименование папок в Outlook PST-файл

Я судимое что-то вроде этого:

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

Но без успеха. Я всегда получаю исключение, что у меня нет прав на изменение имени. Другие настраиваемые папки, которые я могу переименовать без каких-либо проблем.

Есть что-то делать, чтобы разблокировать папку? Или есть ли другая возможность доступа к папкам?

Большое спасибо

Edit: Expetion: вы не имеете права.

+0

Просьбы представить документацию по изъятию. Ваш логический присваиваемый оператор имеет очень мало смысла. –

+0

Я ищу те же параметры в Outlook 2010, но не везет вообще. По-видимому, для этого нет выбора. Насколько я понял, более старая версия Outlook поддерживает такое переименование папок по умолчанию. Я бы приветствовал любые идеи. –

ответ

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 я запустить Visual Studio в режиме administator ..

+0

Не могли бы вы объяснить необходимость переименования двойной папки? 'folder.Name = (folder.Name = name);' –

Смежные вопросы