Laden...

Forenbeiträge von flex Ingesamt 3 Beiträge

08.08.2019 - 12:05 Uhr

An dieser Stelle:

(item as MailItem).SaveAs(ExportPathField.Text + folder.FullFolderPath + @"\" + (item as MailItem).ReceivedTime.ToOADate() + ".msg");
08.08.2019 - 10:46 Uhr

So wie das aussieht funktioniert das nicht.> Fehlermeldung:

System.OutOfMemoryException
HResult=0x8007000E
Nachricht = Es steht nicht genügend Arbeitsspeicher zur Verfügung. Schließen Sie einige Dateien oder Programme, und versuchen Sie es erneut
Quelle = <Die Ausnahmequelle kann nicht ausgewertet werden.>
Stapelüberwachung:
<Die Ausnahmestapelüberwachung kann nicht ausgewertet werden.>

07.08.2019 - 08:33 Uhr

Hallo,

ich entwickle gerade ein kleines Programm, mit dem ich die E-Mails sowie Meetings exportieren kann. Alles Items sollen auf dem Dateisystem gespeichert werden, mit der Ordnerstruktur wie sie in Outlook angelegt sind.


private void ExportItems(MAPIFolder folder)
        {
            Directory.CreateDirectory(ExportPathField.Text + folder.FullFolderPath);

            Items items = folder.Items;
            if (items.Count > 0)
            {
                for (int counter = 1; counter <= items.Count; counter++)
                {
                    object item = items[counter];

                    switch (Microsoft.VisualBasic.Information.TypeName(item))
                    {
                        case "MailItem":
                            (item as MailItem).SaveAs(ExportPathField.Text + folder.FullFolderPath + @"\" + (item as MailItem).ReceivedTime.ToOADate() + ".msg");
                            break;
                        case "MeetingItem":
                            (item as MeetingItem).SaveAs(ExportPathField.Text + folder.FullFolderPath + @"\" + (item as MeetingItem).ReceivedTime.ToOADate() + ".msg");
                            break;
                        default:
                            break;
                    }
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(item);
                } 
            }
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(items);

            for (int counter = 1; counter <= folder.Folders.Count; counter++)
            {
                ExportItems(folder.Folders[counter]);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(folder.Folders[counter]);
            }
}

Das Programm funktioniert mir kleinen Postfächern super, allerdings gibt es bei größeren eine "System.OutOfMemoryException". Der bis dort hin exportierte Ordner ist dann 999MB groß. Ich habe den Build schon auf 64-Bit umgestellt und in der App.cfg folgendes eingefügt, allerdings ohne Erfolg:

  
<runtime>
   <gcAllowVeryLargeObjects enabled="true" />
</runtime>

Ich hoffe Ihr könnt mir helfen und sagen wo mein Fehler ist.

Viele Grüße