Manipulação de Anexos TNEF em Mensagens de Email
TNEF (Transport Neutral Encapsulation Format) é um formato proprietário usado pelo Microsoft Outlook para encapsular conteúdo rico em anexos – mais comumente armazenado como winmail.dat. A API Aspose.Email permite ler mensagens de e‑mail que possuem anexos TNEF e modificar o conteúdo do anexo. O e‑mail pode então ser salvo como um e‑mail normal ou no mesmo formato, preservando os anexos TNEF. Este artigo apresenta diferentes exemplos de código para trabalhar com mensagens contendo anexos TNEF. Este artigo também mostra como criar arquivos EML TNEF a partir de arquivos MSG do Outlook.
Ler uma Mensagem com Anexo TNEF
O trecho de código a seguir mostra como ler uma mensagem preservando os anexos TNEF.
Ler uma Mensagem sem Anexo TNEF
O trecho de código a seguir mostra como ler uma mensagem sem preservar os anexos TNEF.
Carregar e Salvar Anexos TNEF
Com o Aspose.Email para .NET, você pode carregar anexos TNEF diretamente em um MapiAttachment objeto usando um caminho de arquivo ou fluxo, e então salva o objeto no formato TNEF. Isso possibilita a criação de arquivos winmail.dat ou a preservação da formatação específica do Outlook em fluxos de trabalho de e‑mail.
A API fornece os seguintes membros no MapiAttachment classe:
Carregar Anexos TNEF
-
static MapiAttachment LoadFromTnef(string fileName) - Carrega um anexo TNEF de um arquivo .dat.
-
static MapiAttachment LoadFromTnef(Stream stream) - Carrega um anexo TNEF de um fluxo (por exemplo, MemoryStream ou fluxo de arquivo).
Salvar Anexos TNEF
-
void SaveToTnef(string filename) - Salva um MapiAttachment em um arquivo TNEF.
-
void SaveToTnef(Stream stream) - Salva um MapiAttachment em um fluxo no formato TNEF.
O exemplo de código abaixo demonstra como extrair um anexo winmail.dat de uma mensagem de e‑mail, preservá‑lo e adicioná‑lo novamente como anexo à mensagem:
// message.eml contains a winmail.dat attachment, but by default, the attachment is not preserved.
var msg = MapiMessage.Load("message.eml");
var ms = new MemoryStream();
msg.Attachments[0].SaveToTnef("winmail.dat");
ms.Position = 0;
var fromtnefAttachment = MapiAttachment.LoadFromTnef(ms);
msg.Attachments.Add(fromtnefAttachment);
fromtnefAttachment = MapiAttachment.LoadFromTnef("winmail.dat");
msg.Attachments.Add(fromtnefAttachment);
Atualizar Recursos em Anexo TNEF
O trecho de código a seguir mostra como atualizar recursos em um anexo TNEF e preservar o formato TNEF.
Adicionar Anexo à Mensagem TNEF
O trecho de código a seguir mostra como adicionar novos anexos à mensagem principal contendo TNEF.
Criando TNEF EML a partir de MSG
Os MSGs do Outlook às vezes contêm informações como tabelas e estilos de texto que podem ser alterados se forem convertidos para EML. Criar mensagens TNEF a partir desses arquivos MSG permite manter a formatação e até mesmo enviar tais mensagens pelos clientes de e‑mail preservando a formatação. O MailConversionOptions.ConvertAsTnef propriedade é usada para alcançar isso. O trecho de código a seguir mostra como criar EML TNEF a partir de MSG.
Para criar o TNEF, o código de exemplo a seguir pode ser usado.
Identificar Mensagens com Formato TNEF
O trecho de código a seguir mostra como detectar se uma mensagem é TNEF.
Identificar Anexos em Formato TNEF
O Attachment.IsTnef propriedade permite detectar se o anexo da mensagem está formatado como TNEF.
var eml = MailMessage.Load(fileName);
foreach (attachment in eml.Attachments)
{
Console.WriteLine($"Is Attachment TNEF?: {attachment.IsTnef}");
}