Преобразование файлов.MSG в.TXT; Должен ли я использовать Microsoft.Interop Outlook?

Я пытаюсь сделать преобразование из.msg файлов в.txt. У меня два вопроса.

1) Я исследовал и нашел пакет Microsoft.Interop Outlook, и есть способ, которым я могу извлечь bodyHTML, To, Sent Date и некоторые другие свойства, но я чувствую, что это очень ручной процесс, потому что я должны обрезать все HTML-теги, такие как
,, href и т. д.

Вот мой текущий код...

MailItem mailItem = outlookApp.Session.OpenSharedItem(item) as MailItem;
TextFile textFile = new TextFile(); //collection of properties I am interested in
textFile.To = mailItem.To;
textFile.Subject = mailItem.Subject;
textFile.Sent = mailItem.SentOn.ToString();
textFile.Name = Path.GetFileNameWithoutExtension(item);
var atttach = mailItem.Attachments;  //Really just want the names 
textFile.Body = RemoveStuff(mailItem.HTMLBody); //manually removing all html tags
textFiles.Add(textFile);
Marshal.ReleaseComObject(mailItem);

Кто-нибудь знает, есть ли более эффективный способ сделать это в C# или способ использования Interop, о котором я не знаю?

2) Если я иду по маршруту взаимодействия, есть ли способ обойти всплывающее окно в Outlook, спрашивающее, могу ли я разрешить доступ к Outlook? Кажется неэффективным, если моя цель - создать конвертер.

Любая помощь с благодарностью.

Спасибо!

1 ответ

Решение

Во-первых, почему вы используете свойство HTMLBody вместо обычного текста Body?

Во-вторых, вы можете использовать MailItem.saveAs(..., olTxt), чтобы сохранить сообщение в виде текстового файла. Или вы подразумеваете что-то еще под txt файлом?

Outlook выдает запрос безопасности, если ваше антивирусное приложение не обновлено. Если вы не можете управлять средой, в которой выполняется ваш код, Extended MAPi (только C++ или Delphi) или обертка, такая как Redemption (любой язык), в значительной степени является единственным вариантом. См. http://www.outlookcode.com/article.aspx?id=52 для получения дополнительной информации.

В Redemption у вас может быть что-то вроде следующего:

using Redemption;
...
RDOSession session = new RDOSession();
RDOMail msg = session.GetMessageFromMsgFile(TheFileName);
msg.SaveAs(TxtFileName, rdoSaveAsType.olTXT);
Другие вопросы по тегам