It's possible that Outlook is running and the file is opened for exclusive use by Outlook (this is the default way of opening files).
If this is that problem (no matter if your access is blocked by outlook or any other process), you can use the Sysinternals utility "handle.exe". For further detail and the explanation on how you investigate such case, please see my past answer:
how to compress the error 'it is already used by another process' in vb.net[
^].
If the problem is just permission, just check up permission. Then you may need to just run your application as administrator. (I doubt this is the case though.)
If you really need to work with MSG, you need to understand that the format is proprietary, so many relevant products, even 3rd-party ones, will be commercial. But you don't have to use such products, as the format is described in publicly available publications. Please see:
https://msdn.microsoft.com/en-us/library/cc463912.aspx[
^].
See also this very popular CodeProject article:
Reading an Outlook MSG File in C#[
^].
Sorry that his article is only for reading, but it still can be helpful.
See also:
http://blogs.msdn.com/b/openspecification/archive/2009/11/06/msg-file-format-part-1.aspx[
^].
—SA