Конвертация HTML в другие форматы

Конвертация HTML в EML

Aspose.Email для .NET предоставляет метод для конвертации HTML файлов в формат EML с использованием методов MailMessage.Load и MailMessage.Save для загрузки существующего HTML файла и сохранения его в формате EML соответственно:

var eml = MailMessage.Load("myContent.html", new HtmlLoadOptions());
eml.Save("output.eml", SaveOptions.DefaultEml);

В приведенном примере HtmlLoadOptions позволяет указать дополнительные параметры при загрузке MailMessage из HTML формата. Следующий пример кода демонстрирует использование этого класса. В примере задается текстовое представление тела сообщения:

// Создание экземпляра HtmlLoadOptions
var loadOptions = new HtmlLoadOptions();

// Установка свойства ShouldAddPlainTextView в true для генерации представления в простом тексте вместе с HTML
loadOptions.ShouldAddPlainTextView = true;

// Загрузка HTML файла
var mailMessage = MailMessage.Load("input.html", loadOptions);

// Доступ к представлению в простом тексте email сообщения
var plainTextView = mailMessage.GetAlternateViewContent("text/plain");

// Печать или дальнейшая обработка представления в простом тексте
Console.WriteLine("Представление в простом тексте:");
Console.WriteLine(plainTextView);

Конвертация HTML в EMLX

Вы можете легко конвертировать HTML файлы в EMLX. Все свойства и классы, предоставляемые API для конвертации HTML в EML, доступны и для этого типа конвертации:

var eml = MailMessage.Load("myContent.html", new HtmlLoadOptions());
eml.Save("output.emlx", SaveOptions.DefaultEmlx);

Для дополнительных настроек см. параграф Конвертация HTML в EML.

Конвертация HTML в ICS

Для выполнения задачи библиотека предлагает класс Appointment для представления и управления календарными событиями. Следующий пример кода демонстрирует, как создать встречу из HTML контента и сохранить её в формате ICS (iCalendar):

// Пример HTML контента
var htmlContent = File.ReadAllText("content.html");

// Создание и инициализация экземпляра класса Appointment
var appointment = new Appointment(
    "Комната для переговоров 3 в главном офисе", // Место
    "Ежемесячная встреча",                          // Резюме
    "Пожалуйста, подтвердите вашу доступность.",    // Описание
    new DateTime(2015, 2, 8, 13, 0, 0),            // Дата начала
    new DateTime(2015, 2, 8, 14, 0, 0),            // Дата окончания
    "from@domain.com",                             // Организатор
    "attendees@domain.com")
{
    HtmlDescription = htmlContent
};

// Сохранение события в ICS файл
appointment.Save("output.ics", AppointmentSaveFormat.Ics);

Генерация MBOX из HTML контента

Для выполнения конвертации HTML в MBOX используйте метод Load класса MailMessage, указав путь к HTML контенту и экземпляр HtmlLoadOptions. Этот метод анализирует HTML контент и создаёт соответствующий объект MailMessage, сохраняя структуру и форматирование оригинального HTML. После загрузки HTML контента в объект MailMessage запишите сообщение в файл MBOX с помощью класса MboxrdStorageWriter:

using (var eml = MailMessage.Load("content.html", new HtmlLoadOptions())){
    using (var writer = new MboxrdStorageWriter("output.mbox", false)){
        writer.WriteMessage(eml);
    }
}

Конвертация HTML в MHTML

Используйте метод Load класса MailMessage для загрузки существующего файла, указав путь к нему и экземпляр HtmlLoadOptions. Этот метод анализирует HTML контент и создаёт соответствующий объект MailMessage, сохраняя структуру и форматирование оригинального HTML. После загрузки HTML контента в объект MailMessage разработчики могут сохранить его как MHTML файл, используя метод Save, указав желаемый путь к выходному файлу и используя опцию SaveOptions.DefaultMhtml:

var eml = MailMessage.Load("content.html", new HtmlLoadOptions());
eml.Save("output.mhtml", SaveOptions.DefaultMhtml);

Класс MhtSaveOptions предоставляет различные параметры для настройки поведения и настроек выходного MHTML файла вместо SaveOptions.DefaultMhtml. С его помощью можно указать дополнительные опции при сохранении MailMessage в формате MHTML. Наиболее популярные из них:

  • MhtFormatOptions - Позволяет настроить, как email сообщение сохраняется в формате MHT, чтобы наилучшим образом соответствовать вашим потребностям.
  • SaveAttachments - Получает или устанавливает значение, указывающее, нужно ли сохранять вложения.
  • SaveAllHeaders - Определяет, нужно ли сохранять все заголовки в выходном mhtml или нет. Значение по умолчанию - false.
  • PreserveOriginalDate - Определяет, нужно ли сохранять оригинальную дату в mail сообщении при сохранении или нет. Значение по умолчанию - true.

Следующий пример кода демонстрирует, как можно использовать эти свойства:

var mhtSaveOprtions = new MhtSaveOptions
{
    MhtFormatOptions = MhtFormatOptions.WriteHeader,
    SaveAttachments = true,
    SaveAllHeaders = true,
    PreserveOriginalDate = true
}

Конвертация HTML в MSG

После загрузки HTML контента в объект MailMessage сохраните его как файл MSG, используя метод Save, указав желаемый путь к выходному файлу и используя опцию SaveOptions.DefaultMsgUnicode. Эта опция гарантирует, что выходной файл сохранен в формате MSG с кодировкой Unicode.

var eml = MailMessage.Load("content.html", new HtmlLoadOptions());
eml.Save("output.msg", SaveOptions.DefaultMsgUnicode);

Кроме того, Aspose.Email для .NET предлагает множество расширенных функций и опций для конвертации HTML в MSG:

Конвертация HTML в OFT

После загрузки HTML контента в объект MailMessage сохраните его как файл OFT, используя метод Save, указав желаемый путь к выходному файлу и используя опцию SaveOptions.DefaultOft:

var eml = MailMessage.Load("content.html", new HtmlLoadOptions());
eml.Save("template.oft", SaveOptions.DefaultOft);

Добавление сообщения с исходным HTML контентом в PST

Конвертация HTML в PST включает создание нового файла PST (Таблица персонального хранилища) с новой папкой, загрузку HTML файла и добавление его в новую папку:

  1. Создайте экземпляр объекта PersonalStorage, представляющего новый файл PST, с помощью метода Create класса PersonalStorage.
  2. Получите корневую папку файла PST и добавьте к ней подпапку с помощью метода AddSubFolder класса FolderInfo.
  3. Загрузите содержимое HTML файла в объект MapiMessage с помощью метода Load с экземпляром HtmlLoadOptions, чтобы указать, что содержимое в формате HTML.
  4. Добавьте загруженный объект MapiMessage (представляющий HTML контент) в папку в пределах файла PST с помощью метода AddMessage.
using (var pst = PersonalStorage.Create("outputFile.pst", FileFormatVersion.Unicode))
{ 
    var inbox = pst.RootFolder.AddSubFolder("Входящие");
    var msg = MapiMessage.Load("content.html", new HtmlLoadOptions());
    inbox.AddMessage(msg);
}

Добавление сообщения с исходным HTML контентом в OST

Следующий пример кода с этапами покажет, как эти компоненты работают вместе, чтобы добавить HTML контент в файл OST:

  1. Загрузите существующий файл OST с помощью метода FromFile класса PersonalStorage, который будет представлять файл хранения, в котором будут храниться email сообщения.
  2. Загрузите HTML файл с помощью метода Load класса MapiMessage, представляющего email сообщение в формате Microsoft Outlook.
  3. Укажите HtmlLoadOptions, чтобы включить дополнительные опции при загрузке MailMessage из HTML формата.
  4. Получите корневую папку файла OST, используя свойство RootFolder объекта PersonalStorage.
  5. Получите папку Входящие в рамках файла OST, используя метод GetSubFolder на корневой папке.
  6. Добавьте загруженный объект MapiMessage (представляющий HTML контент) в папку Входящие с помощью метода AddMessage на папке.
using (var ost = PersonalStorage.FromFile("storage.ost"))
{
    var msg = MapiMessage.Load("content.html", new HtmlLoadOptions());
    var folderInfo = ost.RootFolder.GetSubFolder("Входящие");
    folderInfo.AddMessage(msg);
}

Конвертация HTML в VCF

Следующий пример кода демонстрирует, как создать элемент контакта, заполнить его HTML контентом и сохранить в файл VCF:

  1. Прочитайте содержимое HTML файла в строковую переменную, используя метод File.ReadAllText.
  2. Создайте новый объект MapiContact, инстанцируя класс MapiContact.
  3. Установите свойства контакта: отображаемое имя, адрес электронной почты.
  4. Установите тело контента контакта в HTML, используя SetBodyContent.
  5. Сохраните контакт как файл VCF, используя метод Save.
var content = File.ReadAllText("content.html");
            
// Создайте новый MapiContact
var contact = new MapiContact();
contact.NameInfo.DisplayName = "Джон Доу";
contact.ElectronicAddresses.Email1.EmailAddress = "john.doe@example.com";
contact.SetBodyContent(content, BodyContentType.Html);

// Сохраните контакт в файл VCF
contact.Save("contact.vcf", ContactSaveFormat.VCard)