2010-01-28 10 views
6

Estoy usando C# para escribir un complemento de Outlook 2007 para almacenar correos electrónicos en una base de datos SQL Server 2005. Me gustaría poder almacenar todo el archivo .msg en un campo varbinary(MAX). ¿Hay alguna manera de hacerlo sin tener que utilizar el método MailItem de Outlook SaveAs() para guardar en un archivo temporal y luego volver a leer el archivo? Tendré que transferir una gran cantidad de correos electrónicos a la base de datos y preferiría evitar costosas lecturas y grabaciones de disco.Almacenamiento de correos electrónicos de Outlook en una base de datos de Microsoft SQL Server

+3

Buen señor suerte esto suena como usted está caminando en una pesadilla –

+1

Cuál es el punto de almacenar el MSG en un formato * * binario en el PP ? Pensé que los .msg son texto ... –

+0

exactamente - almacenar el .msg como NVARCHAR (MAX) también te permitiría aplicar la búsqueda de texto completo a los mensajes de correo ... no tanto si lo almacenas en un formato binario propio. –

Respuesta

2

Si está buscando realmente almacenarlo como un archivo en formato .msg, sin intentar volver a escribirlo usted mismo, diría que está buscando la ruta que mencionó.

Personalmente, me gustaría almacenar partes del correo electrónico, pero eso depende exactamente de qué va a hacer con él. Almacenar un archivo MSG en un DB en mi opinión no es realmente nada de valor. ahora su caso de uso podría probar lo contrario.

+1

Estoy sacando los pedazos y piezas importantes para almacenar como metadatos. Sin embargo, quiero poder volver a mostrar el correo electrónico en Outlook. Básicamente estoy diseñando un reemplazo para carpetas públicas. – Skywalker

+0

Oh, dado que, tal vez tengas mala suerte. Tristemente, parece que no puedo encontrar la manera de hacer esa operación en la memoria. –

+0

Quizás haya una manera de crear un directorio virtual para que el 'MailItem' piense que se está guardando en el disco mientras se está cargando en la memoria. – Skywalker

1

Posiblemente.

Dependiendo de su configuración, puede evitar Outlook y simplemente usar Exchange/SQL Server.

Linked server to Exchange.

nunca he probado tan YMMV

+0

Realmente no tengo acceso al servidor de Exchange y voy a querer que los usuarios para enviar solo ciertos correos electrónicos a la base de datos – Skywalker

+0

Puede que no haya ayudado al OP, pero me ha ayudado inmensamente. ¡Gracias! Esto es exactamente lo que estaba buscando :-). – dallasstar

Cuestiones relacionadas