Конвертация 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 файла и добавление его в новую папку:
- Создайте экземпляр объекта PersonalStorage, представляющего новый файл PST, с помощью метода Create класса PersonalStorage.
- Получите корневую папку файла PST и добавьте к ней подпапку с помощью метода AddSubFolder класса FolderInfo.
- Загрузите содержимое HTML файла в объект MapiMessage с помощью метода Load с экземпляром HtmlLoadOptions, чтобы указать, что содержимое в формате HTML.
- Добавьте загруженный объект 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:
- Загрузите существующий файл OST с помощью метода FromFile класса PersonalStorage, который будет представлять файл хранения, в котором будут храниться email сообщения.
- Загрузите HTML файл с помощью метода Load класса MapiMessage, представляющего email сообщение в формате Microsoft Outlook.
- Укажите HtmlLoadOptions, чтобы включить дополнительные опции при загрузке MailMessage из HTML формата.
- Получите корневую папку файла OST, используя свойство RootFolder объекта PersonalStorage.
- Получите папку Входящие в рамках файла OST, используя метод GetSubFolder на корневой папке.
- Добавьте загруженный объект 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:
- Прочитайте содержимое HTML файла в строковую переменную, используя метод File.ReadAllText.
- Создайте новый объект MapiContact, инстанцируя класс MapiContact.
- Установите свойства контакта: отображаемое имя, адрес электронной почты.
- Установите тело контента контакта в HTML, используя SetBodyContent.
- Сохраните контакт как файл 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)