Converter HTML para Outros Formatos

Converter HTML para EML

Aspose.Email para .NET fornece um método para converter arquivos HTML para o formato EML usando os métodos MailMessage.Load e MailMessage.Save para carregar o arquivo HTML existente e salvá-lo no formato EML, respectivamente:

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

No exemplo de código, a classe HtmlLoadOptions permite especificar opções adicionais ao carregar um MailMessage do formato HTML. O seguinte exemplo de código demonstra o uso dessa classe. No exemplo, ele especifica uma representação textual do corpo da mensagem:

// Criar uma instância de HtmlLoadOptions
var loadOptions = new HtmlLoadOptions();

// Definir a propriedade ShouldAddPlainTextView como verdadeira para gerar uma visualização de texto simples juntamente com o HTML
loadOptions.ShouldAddPlainTextView = true;

// Carregar um arquivo HTML
var mailMessage = MailMessage.Load("input.html", loadOptions);

// Acessar a visualização de texto simples da mensagem de email
var plainTextView = mailMessage.GetAlternateViewContent("text/plain");

// Imprimir ou processar a visualização de texto simples
Console.WriteLine("Visualização em Texto Simples:");
Console.WriteLine(plainTextView);

Converter HTML para EMLX

Você pode facilmente converter arquivos HTML para EMLX. Todas as propriedades e classes fornecidas pela API para conversão de HTML para EML estão disponíveis para este tipo de conversão também:

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

Para configurações adicionais, consulte o parágrafo Converter HTML para EML.

Converter HTML para ICS

Para realizar a tarefa, a biblioteca oferece a classe Appointment para representar e gerenciar eventos de calendário. O seguinte exemplo de código demonstra como criar uma reunião a partir do conteúdo HTML e salvá-la em um arquivo ICS (iCalendar):

// Conteúdo HTML de exemplo
var htmlContent = File.ReadAllText("content.html");

// Criar e inicializar uma instância da classe Appointment
var appointment = new Appointment(
    "Sala de Reunião 3 na Sede do Escritório", // Localização
    "Reunião Mensal",                          // Resumo
    "Por favor, confirme sua disponibilidade.", // Descrição
    new DateTime(2015, 2, 8, 13, 0, 0),       // Data de início
    new DateTime(2015, 2, 8, 14, 0, 0),       // Data de término
    "from@domain.com",                         // Organizador
    "attendees@domain.com")
{
    HtmlDescription = htmlContent
};

// Salvar o evento em um arquivo ICS
appointment.Save("output.ics", AppointmentSaveFormat.Ics);

Gerar MBOX a partir do conteúdo HTML

Para realizar a conversão de HTML para MBOX, use o método Load da classe MailMessage, especificando o caminho do arquivo de conteúdo HTML e uma instância de HtmlLoadOptions. Este método analisa o conteúdo HTML e gera um objeto MailMessage correspondente, preservando a estrutura e a formatação do HTML original. Após carregar o conteúdo HTML em um objeto MailMessage, escreva a mensagem em um arquivo MBOX usando a classe MboxrdStorageWriter:

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

Converter HTML para MHTML

Use o método Load da classe MailMessage para carregar o arquivo existente, especificando um caminho para ele e uma instância de HtmlLoadOptions. Este método analisa o conteúdo HTML e gera um objeto MailMessage correspondente, preservando a estrutura e a formatação do HTML original. Após carregar o conteúdo HTML em um objeto MailMessage, os desenvolvedores podem salvá-lo como um arquivo MHTML usando o método Save, especificando o caminho do arquivo de saída desejado e utilizando a opção SaveOptions.DefaultMhtml:

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

A classe MhtSaveOptions fornece uma variedade de opções para configurar o comportamento e as configurações do arquivo MHTML de saída em vez de SaveOptions.DefaultMhtml. Com suas propriedades, você pode especificar opções adicionais ao salvar o MailMessage no formato MHTML. As mais populares são:

  • MhtFormatOptions - Permite personalizar como a mensagem de email é salva no formato MHT para melhor atender às suas necessidades.
  • SaveAttachments - Obtém ou define um valor indicando se os anexos devem ser salvos.
  • SaveAllHeaders - Define se é necessário salvar todos os cabeçalhos no mhtml de saída ou não. O valor padrão é falso.
  • PreserveOriginalDate - Define se é necessário manter a data original na mensagem de email ao salvar ou não. O valor padrão é verdadeiro.

O seguinte exemplo de código demonstra como essas propriedades podem ser usadas:

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

Converter HTML para MSG

Após carregar o conteúdo HTML em um objeto MailMessage, salve-o como um arquivo MSG usando o método Save, especificando o caminho do arquivo de saída desejado e utilizando a opção SaveOptions.DefaultMsgUnicode neste caso. Esta opção garante que o arquivo de saída seja salvo no formato MSG com codificação Unicode.

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

Além disso, Aspose.Email para .NET oferece uma gama de recursos e opções avançadas para conversão de HTML para MSG:

Converter HTML para OFT

Após carregar o conteúdo HTML em um objeto MailMessage, salve-o como um arquivo OFT usando o método Save, especificando o caminho do arquivo de saída desejado e utilizando a opção SaveOptions.DefaultOft nesta situação:

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

Adicionar mensagem com conteúdo HTML fonte ao PST

A conversão de HTML para PST envolve a criação de um novo arquivo PST (Tabela de Armazenamento Pessoal) com uma nova pasta, carregando um arquivo HTML e adicionando-o à nova pasta:

  1. Crie uma instância de um objeto PersonalStorage que represente um novo arquivo PST usando o método Create da classe PersonalStorage.
  2. Acesse a pasta raiz do arquivo PST e adicione uma subpasta a ela usando o método AddSubFolder da classe FolderInfo.
  3. Carregue o conteúdo de um arquivo HTML em um objeto MapiMessage usando o método Load com uma instância de HtmlLoadOptions para especificar que o conteúdo está no formato HTML.
  4. Adicione o objeto MapiMessage carregado (representando o conteúdo HTML) à pasta dentro do arquivo PST usando o método AddMessage.
using (var pst = PersonalStorage.Create("outputFile.pst", FileFormatVersion.Unicode))
{ 
    var inbox = pst.RootFolder.AddSubFolder("Inbox");
    var msg = MapiMessage.Load("content.html", new HtmlLoadOptions());
    inbox.AddMessage(msg);
}

Adicionar mensagem com conteúdo HTML fonte ao OST

O seguinte exemplo de código com etapas mostrará como esses componentes funcionam juntos para adicionar conteúdo HTML a um arquivo OST:

  1. Carregue um arquivo OST existente com o método FromFile da classe PersonalStorage usado para representar o arquivo de armazenamento que armazenará as mensagens de email.
  2. Carregue o arquivo HTML usando o método Load da classe MapiMessage que representa uma mensagem de email no formato Microsoft Outlook.
  3. Especifique HtmlLoadOptions para habilitar opções adicionais ao carregar MailMessage do formato HTML.
  4. Recupere a pasta raiz do arquivo OST usando a propriedade RootFolder do objeto PersonalStorage.
  5. Obtenha a pasta Inbox dentro do arquivo OST usando o método GetSubFolder na pasta raiz.
  6. Adicione o objeto MapiMessage carregado (representando o conteúdo HTML) à pasta Inbox usando o método AddMessage na pasta.
using (var ost = PersonalStorage.FromFile("storage.ost"))
{
    var msg = MapiMessage.Load("content.html", new HtmlLoadOptions());
    var folderInfo = ost.RootFolder.GetSubFolder("Inbox");
    folderInfo.AddMessage(msg);
}

Converter HTML para VCF

O seguinte exemplo de código demonstra como criar um item de contato, populá-lo com conteúdo HTML e salvá-lo em um arquivo VCF:

  1. Leia o conteúdo de um arquivo HTML em uma variável string usando o método File.ReadAllText.
  2. Crie um novo objeto MapiContact instanciando a classe MapiContact.
  3. Defina as propriedades do contato: nome de exibição, endereço de email.
  4. Defina o conteúdo do corpo do contato como HTML usando SetBodyContent.
  5. Salve o contato como um arquivo VCF usando o método Save.
var content = File.ReadAllText("content.html");
            
// Criar um novo MapiContact
var contact = new MapiContact();
contact.NameInfo.DisplayName = "John Doe";
contact.ElectronicAddresses.Email1.EmailAddress = "john.doe@example.com";
contact.SetBodyContent(content, BodyContentType.Html);

// Salvar o contato em um arquivo VCF
contact.Save("contact.vcf", ContactSaveFormat.VCard);