Есть ли способ открыть .msg файлы в C#? - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь просто получить имя файла электронной почты outlook вместе с его локальным путем и открыть этот файл .msg через outlook. Есть ли способ добиться такого? или это совершенно невозможно?

Мне НЕ нужно читать содержимое MSG-файла. Мне просто нужно открыть его, чтобы конечный пользователь мог просмотреть сохраненный файл электронной почты.

Я сделал следующее, но он не работает вообще.

try { 
Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); 

string filePath = MapPath("~\\path\\filename.msg"); var item = app.Session.OpenSharedItem(filePath) as Microsoft.Office.Interop.Outlook.MailItem;
    string body = item.HTMLBody; int att = item.Attachments.Count; 

} catch (Exception ex) { 
Global.Log.Error(ex.Message, ex.InnerException); 
}

1 Ответ

1 голос
/ 27 января 2020

Существует только один возможный способ - автоматизировать Outlook из кода JS, который выполняется внутри IE, или использовать протокол mailto:

var link = "mailto:target@example.com"; 
 // In addition to this you can add subject or body as parameter . 
 // For e.g. 
 // "mailto:target@example.com?subject=test subject&body=my text"
 window.location.href = link;

Соображения для сервера- В статье Automation of Office говорится следующее:

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых необслуживаемых, неинтерактивных клиентских приложений или компонентов (включая ASP, ASP. NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или тупиковую ситуацию при запуске Office в этой среде.

Если вы создаете решение, которое работает в контексте сервера, вы должны попытаться использовать компоненты, которые были сделаны безопасными для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы части кода работать на стороне клиента. Если вы используете приложение Office из серверного решения, приложению не хватит многих необходимых возможностей для успешной работы. Кроме того, вы будете рисковать стабильностью вашего общего решения.

В таких случаях вы можете рассмотреть возможность использования EWS, если вы имеете дело только с профилями / учетными записями Exchange. Кроме того, вы можете рассмотреть возможность использования низкоуровневого API, на котором основан Outlook - Extended MAPI или любой сторонней оболочки вокруг этого API.

...