2010-01-28 10 views
6

Ich bin mit C# einer Outlook 2007-Add-In zu speichern, E-Mails in einer SQL Server 2005-Datenbank zu schreiben. Ich möchte in der Lage sein, die gesamte MSG-Datei in einem varbinary(MAX)-Feld zu speichern. Gibt es eine Möglichkeit, dies zu tun, ohne die Outlook MailItemSaveAs() Methode zu verwenden, um in eine temporäre Datei zu speichern und dann die Datei wieder einzulesen? Ich werde eine große Anzahl von E-Mails in die Datenbank übertragen müssen und lieber teure Lese- und Schreibvorgänge vermeiden.Speicher von Outlook-E-Mail in einer Microsoft SQL Server-Datenbank

+3

Viel Glück, Sir, das klingt wie Sie in einen Alptraum zu Fuß ist –

+1

Was der Punkt ist die msg in der db in einem * binary * Format des Speicherns ? Ich dachte, MSGs sind Text ... –

+0

genau - Speichern der. MSG als NVARCHAR (MAX) würde auch erlauben Sie Volltextsuche auf die Mail-Nachrichten anwenden .... nicht so sehr, wenn Sie es in einem proprietären Binärformat speichern. –

Antwort

2

Wenn Sie es tatsächlich zu speichern suchen, um als msg-Format-Datei, ohne zu versuchen, dies selbst neu zu schreiben, würde ich sagen, dass Sie an geht die Route, die Sie erwähnt suchen.

persönlich Ich würde Stücke von der E-Mail zu speichern, aber das hängt davon ab, genau das, was Sie damit tun werden. Eine MSG-Datei in einer Datenbank zu speichern, ist meiner Meinung nach nicht wirklich von Wert. Jetzt könnte Ihr Anwendungsfall das Gegenteil beweisen.

+1

Ich ziehe die wichtigen Teile heraus, um sie als Metadaten zu speichern. Ich möchte jedoch die E-Mail wieder in Outlook anzeigen können. Ich entwerfe grundsätzlich einen Ersatz für öffentliche Ordner. – Skywalker

+0

Oh, angesichts dessen, Sie könnten nur Pech gehabt haben. Leider kann ich keinen Weg finden, diese Operation im Speicher auszuführen. –

+0

Vielleicht gibt es eine Möglichkeit, ein virtuelles Verzeichnis zu erstellen, so dass das 'MailItem' denkt, dass es sich auf der Festplatte speichert, während es tatsächlich in den Speicher geladen wird? – Skywalker

1

Möglicherweise.

Je nach Konfiguration können Sie Outlook vermeiden und nur Exchange/SQL Server verwenden.

Linked server to Exchange.

Ich habe nie versucht, es so YMMV

+0

Ich habe nicht wirklich Zugriff auf den Exchange Server und ich werde die Benutzer wollen nur bestimmte E-Mails in die Datenbank zu schieben – Skywalker

+0

Hätte dem OP vielleicht nicht geholfen, aber Sie haben mir enorm geholfen. Vielen Dank! Genau das habe ich gesucht :-). – dallasstar