2016-05-04 31 views
0

我使用Outlook兌換(http://www.dimastr.com/redemption/home.htm)和以下C#代碼從.eml文件生成PST文件。Outlook兌換 - eml to pst - 指定文件夾Hiarachy

  RDOSession session = new RDOSession(); 
      RDOPstStore store = session.LogonPstStore(newpstpath); 
      RDOFolder folder = store.IPMRootFolder.Folders.Item(directoryEmlFile); 
      if (folder == null) 
      { 
       folder = store.IPMRootFolder.Folders.Add(directoryEmlFile); 
      } 

      RDOMail mail = folder.Items.Add("IPM.Note"); 
      mail.Import(directoryEmlFile + "\\0a53e310-b841-43bf-9586-8e7ddb4cd175" + ".eml"); 
      mail.Sent = true; 
      mail.Save(); 
      store.Save(); 

它創建一個PST文件,但是當我將它導入到Outlook時,文件夾結構與此類似。

Personal Folders 
    -C:\Users\asanka\eml 

裏面C:\ Users \ asanka \ eml文件夾我可以看到導入的電子郵件。這是.eml文件原創位置的文件夾。我需要擺脫這一點,並有像這樣的文件夾結構。

Personal Folders 
    -asanka 
    -inbox 

我該怎麼做?任何幫助表示讚賞。

回答

1

這是您傳遞給Folders.Add的文件夾名稱,對不對?您需要傳遞適當的名稱(asanka)來創建文件夾。您可能需要這樣做兩次,因爲您有兩個文件夾:

RDOFolder folder1 = store.IPMRootFolder.Folders.Item("asanka"); 
if (folder1 == null) folder1 = store.IPMRootFolder.Folders.Add("asanka"); 
RDOFolder folder = folder1.Folders.Item("Inbox"); 
if (folder == null) folder = folder1.Folders.Add("Inbox"); 
+0

謝謝你的答案。我按照你的指示更新了我的代碼。但是現在我在執行mail.Import行時遇到了異常。它說{「錯誤導入:0x80030050」} \t System.Exception {System.Runtime.InteropServices.COMException} –

+0

錯誤代碼是STG_E_FILEALREADYEXISTS。您在調用Import時沒有指定格式,因此Redemption默認爲olMsg。指定rdoSaveAsType.olRFC822 –

+0

好吧,你做了我的一天。現在該程序正在運行! –

相關問題