Как просмотреть файл EML в веб-приложении? - PullRequest
0 голосов
/ 16 октября 2018

Мне нужно иметь возможность просматривать EML-файл в веб-приложении, построенном на основе API Angular / .Net.Мне удалось найти службу здесь от Microsoft, которая просматривает только документы Word, Excel или PowerPoint.Я могу встроить эту страницу в веб-приложение и просмотреть эти типы файлов.Однако этот сервис не поддерживает EML-файлы.

Существует еще один сервис encryptomatic , который просматривает EML-файл в Интернете.Но у них нет чего-то, что может быть встроено в приложение.

Google Docs Viewer может просматривать изображения, текст и PDF, но также не поддерживает предварительный просмотр файлов EML.

Iнужна функция, аналогичная тому, как веб-приложение outlook просматривает файл EML.

Я обнаружил несколько пакетов npm, таких как eml-format , которые могут анализировать файл EML.Я также знаю, что Aspose предоставляет парсеры EML.Однако я немного не решаюсь пойти по пути создания своего собственного средства просмотра EML, поскольку мне нужно обрабатывать встроенные изображения, составные сообщения, вложения, и бог знает, что!

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 22 октября 2018
Aspose.Email.MailMessage mailMessage = Aspose.Email.MailMessage.Load(templateStream);
            foreach (var linkedResource in mailMessage.LinkedResources)
            {
                using (var memoryStream = new MemoryStream())
                {
                    linkedResource.ContentStream.CopyTo(memoryStream);
                    string base64String = Convert.ToBase64String(memoryStream.ToArray());
                    mailMessage.HtmlBody = mailMessage.HtmlBody.Replace($"cid:{linkedResource.ContentId}", $"data:{linkedResource.ContentType.MediaType};base64," + base64String);

                }
            }
        }
        mailMessage.HtmlBody = Regex.Replace(mailMessage.HtmlBody, @"\<!--(.|\n)*?-->", "");

Вот что я сделал на тот случай, если кто-то еще найдет такое же решение.Использовал Aspose Email Library для чтения потока EML / MSG и извлечения из него HTML.Пара дополнительных вещей, которые требовались, должны были заменить CID строкой Base64 для встроенных изображений и удалить закомментированный код, используя Regex.

...