EML в MSG

EML — это расширение файла для сообщения электронной почты, сохраненного в файле в стандартном формате MIME RFC 822, поддерживаемом Outlook, Outlook Express, Windows Live Mail или Thunderbird. Кроме того, формат файла EML — это текстовый формат файла MIME (rfc822) для хранения писем. С другой стороны, MSG — это составной двоичный формат файла, основанный на Microsoft Outlook MAPI. Кроме того, формат файла Outlook Item MSG (. msg) — это синтаксис для хранения одного объекта Message, например, письма, встречи, контакта, задачи и т. д. в файле.

В этой статье мы рассмотрим шаги по программному преобразованию файлов EML в формат MSG с использованием REST API.

API обработки электронной почты

Aspose.Email Cloud — это API на основе REST, предлагающий возможности создания, обработки и преобразования распространенных форматов электронной почты (Outlook EML, MSG, файлы iCalendar и VCard) в другие поддерживаемые форматы файлов. Вы получаете возможности работы с заголовком, адресом отправителя, содержимым, включенным в сообщение, или обработки вложений электронной почты, таких как файлы, фотографии, документы и многое другое. В то же время реализуйте обработку карточек контактов (Operate VCard) или обрабатывайте календарь через поддержку iCalendar в своих приложениях.

Чтобы облегчить разработчикам задачу, мы создали оболочки вокруг API-интерфейсов Cloud, чтобы вы могли получить все функции прямо в своей любимой IDE. Прежде чем продолжить, рекомендуем перейти по следующей ссылке, чтобы узнать больше о как установить Aspose.Cloud SDK.

Конвертировать EML в MSG на C#

Для выполнения вашего требования выполните следующие шаги:

  • Сначала создайте объект класса EmailCloud, передав данные ClientID и Client Secret в качестве аргументов.
  • Во-вторых, считайте исходный файл электронной почты в экземпляр File.OpenRead и загрузите в облачное хранилище методом UploadFile(…)
  • В-третьих, создайте экземпляр EmailGetAsFileRequest, передавая входной файл и результирующий формат.
  • Теперь используйте API EmailGetAsFile для преобразования файла EML, доступного в облачном хранилище, в формат MSG.
  • Наконец, вызовите пользовательский метод для сохранения полученного файла на локальном диске с помощью экземпляра File.Create.
// Для получения полных примеров и файлов данных перейдите по ссылке 
https://github.com/aspose-email-cloud/aspose-email-cloud-dotnet

// Получите учетные данные клиента с https://dashboard.aspose.cloud/
string clientSecret = "d757548a9f2558c39c2feebdf85b4c44";
string clientID = "4db2f826-bf9c-42e7-8b2a-8cbca2d15553";

// создать экземпляр EmailCloud API
var emailApi = new EmailCloud(clientSecret, clientID);
       
// Имя исходного файла EML
string name = "sample.eml";
// имя результирующего файла MSG
string resultantFile = "converted.msg";
// формат результирующего файла
string toFormat = "Msg";

 try
{
    // прочитать исходный EML для потокового объекта
    using (var file = System.IO.File.OpenRead(@"C:\Users\shahbnay\Downloads\" + name))
    {
    
        // загрузить исходный файл EML в облачное хранилище
        emailApi.CloudStorage.File.UploadFile(new Aspose.Email.Cloud.Sdk.Model.UploadFileRequest(name, file));
        
        // создать экземпляр EmailGetAsFileRequest, передав входной файл и полученный формат
        var convertRequest = new EmailGetAsFileRequest(name, toFormat);
        
        // Выполнить операцию преобразования
        var response = emailApi.Email.GetAsFile(convertRequest);

        // вывести сообщение об успешном завершении, если преобразование прошло успешно
        if (response != null && response.Equals("OK"))
        {
            // распечатать сообщение об успешном завершении
            Console.WriteLine("Successfully converted EML to MSG !");
            Console.ReadKey();
        }
        
        // сохранить полученный файловый поток на локальном диске
        saveToDisk(response, @"C:\Users\shahbnay\Downloads\" + resultantFile);
    }
}catch (Exception ex)
{
    // вывести исключение в консоль
    Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}

// пользовательский метод сохранения вывода на системный диск
static void saveToDisk(Stream responseStream, String resultantFile)
{
    var fileStream = File.Create(resultantFile);
    responseStream.Seek(0, SeekOrigin.Begin);
    responseStream.CopyTo(fileStream);
    fileStream.Close();
}

Образцы файлов, использованные в приведенном выше примере, можно загрузить с sample.eml и converted.msg.

Если вам необходимо загрузить файл с локального диска и выполнить конвертацию, попробуйте использовать API EmailConvert.

EML в MSG с помощью команды cURL

Поскольку Aspose.Email Cloud разработан в соответствии с архитектурой REST, к нему можно легко получить доступ с помощью команд cURL. Используйте терминальное приложение/командную строку для доступа к API. Поэтому первым шагом является генерация токена доступа JWT на основе учетных данных клиента, указанных на панели управления Aspose.Cloud. Для получения дополнительных сведений посетите Как получить токен JWT с помощью идентификатора клиента и секретного ключа клиента.

После того, как у нас есть токен JWT, используйте следующую команду для преобразования файла EML, доступного в облачном хранилище, в формат MSG и сохранения вывода на локальном диске. Для целей преобразования используется API EmailGetAsFile.

curl -X GET "https://api.aspose.cloud/v4.0/email/as-file?fileName=sample.eml&format=Msg" \
-H  "accept: multipart/form-data" \
-H  "authorization: Bearer <JWT Token>" \
-o Converted.msg

Заключение

В этой статье мы обсудили возможности Aspose.Email Cloud для обработки популярных форматов электронной почты. В частности, мы обсудили преобразование файла EML в MSG с использованием C# .NET и команды cURL. Тем не менее, Cloud SDK разрабатываются в соответствии с лицензией MIT, и вы можете загрузить полный исходный код, доступный через GitHub.

Мы также предоставили swagger view облачных API, чтобы вы могли тестировать API в веб-браузере. Кроме того, если у вас возникнут какие-либо проблемы или у вас появятся дополнительные вопросы, пожалуйста, свяжитесь с нами через бесплатный форум поддержки клиентов.

Похожие статьи