2010-01-28 3 views
6

J'utilise C# pour écrire un complément Outlook 2007 pour stocker des e-mails dans une base de données SQL Server 2005. Je voudrais être en mesure de stocker le fichier .msg entier dans un champ varbinary(MAX). Y at-il un moyen de le faire sans avoir à utiliser la méthode MailItem Outlook SaveAs() pour enregistrer dans un fichier temporaire, puis relire le fichier? Je vais devoir transférer un grand nombre de courriels à la base de données et préférer éviter les lectures et écritures de disque coûteuses.Stockage des e-mails Outlook dans une base de données Microsoft SQL Server

+3

Bonne chance monsieur cela sonne comme vous marchez dans un cauchemar –

+1

Quel est le point de stockage du msg dans un format binaire * * dans la db ? Je pensais que les .msg sont du texte ... –

+0

exactement - stocker le .msg comme NVARCHAR (MAX) vous permettrait également d'appliquer la recherche de texte intégral aux messages électroniques ... pas tellement si vous le stockez dans un format binaire propriétaire. –

Répondre

2

Si vous cherchez à le stocker en tant que fichier au format .msg, sans essayer de le réécrire vous-même, je dirais que vous envisagez de suivre le chemin que vous avez mentionné.

Personnellement, je voudrais stocker des éléments de l'e-mail, mais cela dépend exactement de ce que vous allez en faire. Stocker un fichier MSG dans une base de données à mon avis n'a pas vraiment de valeur. maintenant, votre cas d'utilisation pourrait prouver le contraire.

+1

Je suis en train de sortir les morceaux importants pour stocker en tant que métadonnées. Cependant, je veux pouvoir afficher l'email dans Outlook. Je suis en train de concevoir un remplacement pour les dossiers publics. – Skywalker

+0

Oh, étant donné cela, vous pourriez ne pas avoir de chance. Malheureusement, je n'arrive pas à trouver un moyen de faire cette opération en mémoire. –

+0

Peut-être existe-t-il un moyen de créer un répertoire virtuel afin que 'MailItem' pense qu'il est en train de se sauvegarder sur le disque alors qu'il est en train de se charger en mémoire? – Skywalker

1

Eventuellement. En fonction de votre configuration, vous pouvez éviter Outlook et utiliser simplement Exchange/SQL Server.

Linked server to Exchange.

Je ne l'ai jamais essayé si YMMV

+0

Je n'ai pas vraiment accès au serveur Exchange et je vais vouloir les utilisateurs pour pousser seulement certains emails dans la base de données – Skywalker

+0

N'aurait peut-être pas aidé le PO, mais tu m'as énormément aidé. Je vous remercie! Ceci est exactement ce que je cherchais :-). – dallasstar

Questions connexes