I am using c# to write an Outlook 2007 add-in to store emails in a SQL Server 2005 database. I would like to be able to store the entire .msg file in a varbinary(MAX)
field. Is there a way to do this without having to use the Outlook MailItem
's SaveAs()
method to save to a temp file and then read the file back in? I will need to transfer a large number of emails to the database and would prefer to avoid costly disk reads and writes.
views:
553answers:
2
+1
A:
If you are looking to actually store it as a .msg format file, without trying to re-write this yourself, I would say that you are looking at going the route you mentioned.
Personally I would go to storing bits and pieces of the email, but that depends on exactly what you are going to do with it. Storing a MSG file in an DB in my opinion isn't really anything of value. now your use case might prove otherwise.
Mitchel Sellers
2010-01-28 21:43:41
I am pulling out the important bits and pieces to store as metadata. However, I want to be able to display the email back in Outlook. I am basically designing a replacement for public folders.
Skywalker
2010-01-28 21:48:33
Oh, given that, you might just be out of luck. Sadly I cannot seem to find a way to do that operation in-memory.
Mitchel Sellers
2010-01-28 21:50:57
Perhaps there is a way to create a virtual directory so the `MailItem` thinks it is saving itself to the disk while it is actually being loading into memory?
Skywalker
2010-01-28 21:53:54
At that point, the overhead of simple file operations are most likely not going to be any worse than something to try and get that...
Mitchel Sellers
2010-01-28 21:56:33
A:
Possibly.
Depending on your setup, you can avoid Outlook and just use Exchange/SQL Server.
I've never tried it so YMMV
gbn
2010-01-28 21:49:32
I don't really have access to the Exchange server and I am going to want the users to push only certain emails into the database
Skywalker
2010-01-29 14:56:55