У меня есть папка сообщений журнала в формате .EML.
Я пишу некоторый код, чтобы сохранить файл .EML как файл .MSG, а затем получить доступ к вложенному файлу .MSG в сохраненном файле. MSG файл. Когда я пытаюсь получить доступ к любому из полей с помощью прикрепленного файла .MSG, я получаю следующее исключение:
$ exception {"Ошибка в IMessage.OpenAttach: MAPI_E_NO_ACCESS"} System.UnauthorizedAccessException
I проверил права на созданный файл, и они выглядят нормально.
Код, который я использую:
RDOSession Session = new RDOSession();
foreach (var file in System.IO.Directory.GetFiles(@"\\win2012r2-ns\UserProfiles\phil\Downloads\email Archive\Beth_1\"))
{
RDOMail mi = Session.CreateMessageFromMsgFile(@"C:\Temp\temp.msg", "IPM.Mail");
mi.Import(file, 1024);
mi.Save();
Marshal.ReleaseComObject(mi);
mi = Session.GetMessageFromMsgFile(@"C:\Temp\temp.msg");
for (int i = mi.Attachments.Count; i >= 1; i--)
{
if (mi.Attachments[i].FileName.IndexOf(".msg") != -1)
{
Create_Folders(mi.Attachments[i].EmbeddedMsg.ReceivedTime.Year.ToString(), mi.Attachments[i].EmbeddedMsg.ReceivedTime.Month.ToString(), mi.Attachments[i].EmbeddedMsg.ReceivedTime.Day.ToString());
mi.Attachments[i].SaveAsFile(@"\\win2012r2-ns\EmailArchive\" + mi.Attachments[i].EmbeddedMsg.ReceivedTime.Year.ToString() + @"\" + mi.Attachments[i].EmbeddedMsg.ReceivedTime.Month.ToString() + @"\" + mi.Attachments[i].EmbeddedMsg.ReceivedTime.Day.ToString() + @"\" + mi.EntryID.ToString() + ".msg");
}
}
Marshal.ReleaseComObject(mi);
}