2016-05-04 28 views
0

Ich verwende Outlook Einlösung (http://www.dimastr.com/redemption/home.htm) und folgenden C# -Code, um eine PST-Datei aus. Eml-Dateien zu generieren.Outlook Redemption - Eml zu Pst - Ordner angeben 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(); 

Es erstellt eine PST-Datei, aber wenn ich es in Outlook importieren, ist die Ordnerstruktur ähnlich.

Personal Folders 
    -C:\Users\asanka\eml 

Inside C: \ Benutzer \ asanka \ eml Ordner Ich kann die importierte E-Mail sehen. Das ist der Ordner, in dem sich die .eml-Datei ursprünglich befand. Ich muss das loswerden und die Ordnerstruktur so haben.

Personal Folders 
    -asanka 
    -inbox 

Wie kann ich das tun? jede Hilfe wird geschätzt.

Antwort

1

Das ist der Ordnername, den Sie an Folders.Add übergeben, richtig? Sie müssen den entsprechenden Namen (Asanka) übergeben, um den Ordner zu erstellen. Sie müssen das wahrscheinlich zweimal machen, da Sie zwei Ordner haben:

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

Vielen Dank für die Antwort. Ich habe meinen Code aktualisiert, wie Sie es angewiesen haben. Aber jetzt bekomme ich eine Ausnahme wenn mail.Import Zeile ausgeführt wird. Es heißt {"Fehler beim Importieren: 0x80030050"} \t System.Exception {System.Runtime.InteropServices.COMException} –

+0

Der Fehlercode ist STG_E_FILEALREADYEXISTS. Sie geben das Format beim Aufrufen von Import nicht an, sodass die Rückstellung standardmäßig auf olMsg angewendet wird. Angeben rdoSaveAsType.olRFC822 –

+0

OK Sie haben meinen Tag gemacht. Jetzt funktioniert das Programm! –