Converter EML para HTML

Converter EML para HTML

Para integrar o conteúdo de e‑mail em aplicações web, a conversão de EML para HTML é a escolha certa, facilitando uma apresentação visualmente atraente do e‑mail.

Para converter EML para HTML, você precisará das seguintes classes:

  • MailMessage class é usada para criar um objeto que representa uma mensagem de e‑mail. Permite acessar propriedades da mensagem, como assunto, corpo, remetente e endereços dos destinatários, etc. Com seus métodos, é possível criar, carregar e analisar, modificar, salvar e‑mails ou realizar outras manipulações com eles.
  • SaveOptions class fornece opções para salvar mensagens de e‑mail em vários formatos. Permite que os usuários personalizem a forma como as mensagens são salvas em diferentes formatos. Com esta classe, os usuários podem especificar opções para salvar anexos, cabeçalhos, metadados e propriedades das mensagens de e‑mail, definir opções de codificação ou escolher se as mensagens serão salvas com criptografia ou não.

No exemplo de código abaixo, essas classes trabalham juntas para carregar um arquivo EML existente e especificar o formato da mensagem como EML. Subsequentemente, elas salvam a mensagem de e‑mail carregada como um arquivo HTML usando as opções padrão de salvamento HTML especificadas:

  1. Use o MailMessage.Load() método para carregar o arquivo existente em um objeto MailMessage especificando o formato da mensagem.
  2. Salve o objeto MailMessage carregado como um arquivo HTML usando o salvar método. Use SaveOptions.DefaultHtml() para especificar as opções de salvamento para o formato HTML.
// Initialize and Load an existing EML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.eml");
message.Save("output.html", SaveOptions.DefaultHtml);

Salvar recursos EML em um arquivo separado

Aspose.Email fornece o ResourceRenderingMode enumeração que permite aos desenvolvedores manipular recursos em um arquivo HTML. No exemplo de código abaixo, este enum é usado para salvar recursos em um arquivo e inserir no HTML a tag ‘src’ com o caminho para esse arquivo:

  1. Carregue a mensagem de e‑mail a partir do arquivo fonte usando o MapiMessage.Load método.
  2. Crie uma instância de HtmlSaveOptions com opções de renderização e recursos especificadas.
  3. Salve a mensagem de e‑mail carregada como um arquivo HTML no local de destino usando o Salvar método com o parâmetro HtmlSaveOptions.
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target.html"), htmlSaveOptions);

Incorporar recursos em um arquivo HTML

Em alguns casos, é necessário incorporar recursos, como imagens, diretamente no arquivo HTML para distribuição e apresentação perfeitas. Com o Aspose.Email for .NET, você pode alcançar isso facilmente usando o ResourceRenderingMode enumeração:

  1. Carregue a mensagem de e‑mail a partir do arquivo fonte usando o MapiMessage.Load método.
  2. Criar um novo HtmlSaveOptions objeto e defina a propriedade ResourceRenderingMode para EmbedIntoHtml.
  3. Salve a mensagem de e‑mail carregada como um arquivo HTML usando o Salvar método, especificando o caminho do arquivo de destino e passando o objeto HtmlSaveOptions como parâmetro para incorporar recursos ao arquivo HTML.
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml
};
msg.Save(Path.Combine("target.html"), htmlSaveOptions);

Converter EML para ICS

O exemplo de código a seguir demonstra como extrair dados de eventos de calendário de um arquivo EML e salvá-los em um arquivo ICS separado para uso ou manipulação adicional.

// Load the EML file
var eml = MailMessage.Load("message.eml");
// Find the alternate view with MediaType "text/calendar" (ICS)
var icsView = eml.GetAlternateViewContent("text/calendar");
// If an ICS view is found, save it to a file
if (icsView != null)
{
    File.WriteAllText("appointment.ics", icsView);
}

Personalização

Aspose.Email for .NET fornece ferramentas para personalizar o conteúdo ICS (iCalendar) extraído de arquivos EML (Electronic Mail).

Personalizar os detalhes do evento

O exemplo de código a seguir demonstra como definir diversos detalhes do compromisso, como resumo, local e descrição. O código utiliza o Appointment class que representa compromissos ou eventos de calendário no formato ICS (iCalendar). A classe fornece propriedades e métodos para criar, modificar e gerenciar eventos de calendário programaticamente.

// Load the EML file
var eml = MailMessage.Load("message.eml");
// Find the alternate view with MediaType "text/calendar" (ICS)
var icsView = eml.GetAlternateViewContent("text/calendar");
// If an ICS view is found, load it to Appointment class object
var appointment = Appointment.Load(new MemoryStream(Encoding.UTF8.GetBytes(icsView)));

// Customize the event details
appointment.Summary = "Customized Event Summary";
appointment.Location = "Customized Location";
appointment.Description = "Customized Event Description";

// Add or modify attendees as needed
appointment.Attendees.Clear();
appointment.Attendees.Add("custom@example.com");

// Save the customized ICS content to a file
appointment.Save("customized_appointment.ics");

Criar um padrão de recorrência

O exemplo de código a seguir demonstra como criar um padrão de recorrência semanal para um compromisso, onde o compromisso ocorre a cada 5 semanas aos sábados. O código utiliza o Recorrência propriedade do Appointment class que obtém ou define o padrão de recorrência.

var pattern = new  WeeklyRecurrencePattern(5, 7);
pattern. EndDate = new DateTime(2023, 8, 7);

appointment.Recurrence = pattern;

Adicionar EML ao MBOX

MBOX é um formato comumente usado para armazenar várias mensagens de e‑mail em um único arquivo, tornando-o adequado para arquivamento e migração de e‑mail. Use o MboxrdStorageWriter class para escrever mensagens de e‑mail em um arquivo MBOX. O exemplo de código a seguir demonstra como executar esta tarefa:

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

Converter EML para MHTML

Com o Aspose.Email for .NET, você pode converter facilmente arquivos EML para o formato MHTML para diversos fins, como arquivamento, compatibilidade, visualização offline, etc. Carregue a mensagem de e‑mail usando o MailMessage.Load, então use o MhtSaveOptions class como parâmetro para o MailMessage.Save método para especificar o formato do arquivo de saída ao salvar a mensagem como um arquivo separado:

// Initialize and Load an existing EML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.eml");
var mhtSaveOptions = new MhtSaveOptions;
message.Save("output.mhtml", mhtSaveOptions);

O MhtSaveOptions class fornece várias opções para personalizar arquivos MHTML de saída de acordo com seus requisitos específicos:

  • Preservar a formatação da data original. Você pode optar por preservar a formatação original das mensagens de e‑mail durante o processo de conversão:

    saveOptions.PreserveOriginalDate = true;
    
  • Definir codificação de saída. Você pode especificar a codificação a ser usada ao gravar os arquivos MHTML de saída:

    saveOptions.OutputEncoding = Encoding.UTF8; 
    
  • Incluir anexos. Isso pode ser útil se você quiser preservar anexos ao converter e‑mails para o formato MHTML:

    saveOptions.SaveAttachments = true;
    

Converter EML para MSG

Se você precisa migrar dados de e‑mail, arquivar mensagens ou integrar com o Microsoft Outlook, o Aspose.Email fornece soluções para alcançar seus objetivos. Arquivos MSG são amplamente usados pelo Microsoft Outlook. Para conversão de EML para MSG, use o MailMessage.Load método para carregar o arquivo EML existente especificando como ele será carregado com EmlLoadOptions.

O exemplo de código a seguir demonstra como converter arquivos EML para o formato MSG:

// Load mail message
using (var message = MailMessage.Load("sourceFile.eml", new EmlLoadOptions())){
// Save as MSG
var msgSaveOptions = new MsgSaveOptions;
message.Save("output.msg", MsgSaveOptions);
} 

Converter EML para OFT

Para converter arquivos EML para o formato Outlook Template (OFT), carregue a mensagem de e‑mail existente usando o MailMessage.Load método e salvá-lo com MailMessage.Save especificando as opções padrão para salvar uma mensagem no formato OFT:

// load the EML file to be converted
var message = MailMessage.Load("My File.eml"); 
// save EML as a OFT 
message.Save("Saved File.oft", SaveOptions.DefaultOft);

Adicionar EML ao PST

Para converter arquivos EML para o formato Personal Storage Table (PST), carregue a mensagem usando o MapiMessage.Load método, criar o arquivo de saída com o PersonalStorage.Create e adicionar o e‑mail à pasta Caixa de Entrada criada no arquivo de armazenamento usando o AddMessage:

using (var msg = MapiMessage.Load("sourceFile.eml", new EmlLoadOptions()))
{
    using (var personalStorage = PersonalStorage.Create("outputFile.pst", FileFormatVersion.Unicode))
  {
        var inbox = personalStorage.RootFolder.AddSubFolder("Inbox");
        inbox.AddMessage(msg);
  }
}

Adicionar EML ao OST

Desenvolvedores podem converter facilmente arquivos EML para o formato Outlook Offline Storage Table (OST), permitindo integração com o Microsoft Outlook. O exemplo de código a seguir demonstra como adicionar uma mensagem EML a um arquivo OST:

using (var ost = PersonalStorage.FromFile("storage.ost"))
{
    // Load the EML file
    var msg = MapiMessage.Load("message.eml", new EmlLoadOptions());

    // Add the EML message to the OST file
    var folderInfo = ost.RootFolder.GetSubFolder("Inbox");
    folderInfo.AddMessage(msg);
}

O EmlLoadOptions parâmetro especifica opções adicionais para carregar arquivos EML, como preservar formatos de mensagens incorporados, remover assinaturas e mais.

Converter EML para VCF

Aspose.Email for .NET oferece funcionalidade para converter arquivos EML para o formato vCard (VCF), permitindo que desenvolvedores extraiam informações de contato de mensagens de e‑mail. Para esse fim, a biblioteca oferece o GetAlternateViewContent método do MailMessage class que permite aos desenvolvedores acessar visualizações alternativas dentro de mensagens de e‑mail e extrair conteúdo VCF incorporado em arquivos EML para uso futuro:

// Load the EML file
var eml = MailMessage.Load("message.eml");
// Find the alternate view with MediaType "text/vcard" (VCF)
var vcfView = eml.GetAlternateViewContent("text/vcard");
// If an VCF view is found, save it to a file
if (vcfView != null)
{
    File.WriteAllText("contact.vcf", vcfView);
}