Gerenciando mensagens do Outlook

Salvar Emails como HTML

O Aspose.Email permite salvar recursos de email com caminhos relativos ao exportar mensagens para o formato HTML. Esse recurso oferece mais flexibilidade na forma como os recursos são vinculados no arquivo HTML de saída, facilitando o compartilhamento e a exibição de emails salvos em diferentes sistemas. Para salvar recursos com caminhos relativos, use HtmlSaveOptions.UseRelativePathToResources propriedade. O valor padrão da propriedade é false (os recursos são salvos com caminhos absolutos). Quando definido como true, os recursos são salvos com caminhos relativos.

Arquivos HTML com caminhos relativos são mais portáveis e podem ser visualizados corretamente independentemente da estrutura de arquivos do ambiente de hospedagem. Você pode escolher entre caminhos absolutos e relativos conforme os requisitos. É possível definir caminhos personalizados para recursos usando o ResourceHtmlRendering evento.

O exemplo de código a seguir demonstra como salvar um email com caminho relativo padrão para recursos:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

Neste caso, os recursos serão salvos na pasta [nome do arquivo html]_files, no mesmo caminho do arquivo .html, e o HTML referenciará os recursos via caminhos relativos.

O exemplo de código abaixo demonstra como salvar com caminho absoluto para recursos:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = false
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

Como no primeiro caso, os recursos serão salvos na pasta [nome do arquivo html]_files por padrão, mas o HTML referenciará os recursos usando caminhos absolutos.

Usando o ResourceHtmlRendering evento, você pode definir caminhos relativos ou absolutos personalizados para os recursos. Ao personalizar caminhos com o ResourceHtmlRendering manipulador de evento, e como UseRelativePathToResources está definido como true, você deve atribuir um caminho relativo ao PathToResourceFile propriedade para garantir referências corretas.

O exemplo de código a seguir demonstra como personalizar o caminho relativo usando o evento ResourceHtmlRendering

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

htmlSaveOptions.ResourceHtmlRendering += (o, args) =>
{
    if (o is AttachmentBase attachment)
    {
	    // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
        args.PathToResourceFile = $@"images\{attachment.ContentType.Name}";
    }
};

msg.Save(Path.Combine(targetPath, "A Day in the Park.html"), htmlSaveOptions);

Converter MSG para Mensagens MIME

A API Aspose.Email oferece a capacidade de converter arquivos MSG em mensagens MIME usando o ToMailMessage método.

Definir Tempos Limite para Conversão e Carregamento de Mensagens

Os recursos a seguir permitirão definir o tempo limite em milissegundos para o processo de conversão e carregamento:

O exemplo de código abaixo mostrará como definir o tempo limite ao converter uma mensagem:

var options = new MailConversionOptions();
// Set the timeout to 5 seconds
options.Timeout = 5000;

options.TimeoutReached += (object sender, EventArgs args) =>
{
    string subj = (sender as MailMessage).Subject;
	 // Set a flag indicating the timeout was reached
    isTimedOut = true;
};

var mailMessage = mapiMessage.ToMailMessage(options);

Conversão de MSG para EML Preservando Corpo RTF

A conversão de um arquivo MSG para EML preservando o corpo RTF pode ser feita de duas maneiras:

Ambas as propriedades obtêm ou definem um valor que indica se o corpo rtf deve ser mantido no MailMessage.

Os trechos de código a seguir mostram como converter um arquivo MSG para EML e preservar o corpo RTF:

var loadOptions = new MsgLoadOptions
{
    PreserveRtfContent = true
};

var eml = MailMessage.Load("my.msg", loadOptions);
var conversionOptions = new MailConversionOptions
{
    PreserveRtfContent = true
};

var msg = MapiMessage.Load("my.msg");

var eml = msg.ToMailMessage(conversionOptions);

Manipulação de Arquivos de Modelo do Outlook (.OFT)

Os modelos do Outlook são muito úteis quando você deseja enviar uma mensagem de email semelhante repetidamente. Em vez de preparar a mensagem do zero a cada vez, primeiro prepare a mensagem no Outlook e salve‑a como um Modelo do Outlook (OFT). Depois, sempre que precisar enviar a mensagem, você pode criá‑la a partir do modelo, economizando tempo ao escrever o mesmo texto no corpo ou no assunto, definir formatação etc. O Aspose.Email MailMessage classe pode ser usada para carregar e ler um arquivo de modelo Outlook (OFT). Uma vez que o modelo Outlook é carregado em uma instância da MailMessage classe, você pode atualizar o remetente, destinatário, corpo, assunto e outras propriedades. Após atualizar as propriedades:

  • Enviar o e‑mail usando o SmtpClient classe ou
  • Salvar a mensagem como MSG e fazer atualizações/validações adicionais usando o Microsoft Outlook.

Nos exemplos de código abaixo, nós:

  1. Carregue o modelo usando o MailMessage classe.
  2. Atualizar algumas das propriedades.
  3. Salvar a mensagem no formato MSG.

O trecho de código a seguir mostra como carregar o arquivo OFT, atualizar a mensagem e salvá‑la no formato MSG.

Salvar Arquivos MSG como Modelos

O snippet de código a seguir mostra como salvar o arquivo Outlook MSG como um modelo.

Determinar Tipo de Mensagem MAPI (OFT ou MSG)

Ao carregar um objeto MapiMessage a partir de um arquivo, pode ser necessário determinar se a mensagem carregada é um arquivo de modelo ou um e‑mail normal. Usando o IsTemplate propriedade do MapiMessage classe, você pode detectar com precisão se um e‑mail é um modelo ou não. Essa funcionalidade pode ser valiosa ao lidar e processar vários tipos de arquivos de e‑mail dentro de aplicações e sistemas.

O exemplo de código abaixo demonstra como determinar se um MapiMessage é OFT ou MSG:

var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false

var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true

Salvar MapiMessage ou MailMessage no formato OFT

O SaveOptions classe permite especificar opções adicionais ao salvar um MailMessage ou MapiMessage em um formato específico.

O exemplo de código a seguir demonstra como salvar uma mensagem no formato OFT:

// Save the MailMessage to OFT format
using (var eml = MailMessage.Load("message.eml"))
{
    eml.Save("message.oft", SaveOptions.DefaultOft);
	
	// or alternative way #2
	var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    eml.Save("message.oft", saveOptions);
	
	// or alternative  way #3
	saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    eml.Save("message.oft", saveOptions);

}

// Save the MapiMessage to OFT format
using (var msg = MapiMessage.Load("message.msg"))
{
    msg.Save("message.oft", SaveOptions.DefaultOft);
	
	// or alternative way #2
	var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    msg.Save("message.oft", saveOptions);
	
	// or alternative  way #3
	saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    msg.Save("message.oft", saveOptions);
}

Gerenciando Mensagens Assinadas Digitalmente

O Aspose.Email implementa o algoritmo completo de objeto de email S/MIME. Isso confere à API total capacidade de preservar assinaturas digitais ao converter mensagens entre formatos.

Preservar Assinatura durante a Conversão de EML para MSG

Aspose.Email preserva a assinatura digital ao converter de EML para MSG. O snippet de código a seguir mostra como converter de EML para MSG.

Converter mensagens S/MIME de MSG para EML

Aspose.Email preserva a assinatura digital ao converter de MSG para EML, conforme mostrado no snippet de código a seguir.

Verificar Assinaturas de E‑mails Seguros

Os recursos a seguir estão disponíveis para verificar a assinatura de objetos MapiMessage.

O exemplo de código abaixo mostra como implementar os recursos no seu projeto:

var msg = MapiMessage.Load(fileName, new EmlLoadOptions());
var result = new SecureEmailManager().CheckSignature(msg);

var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MapiMessage.Load(fileName);
var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();

var result = new SecureEmailManager().CheckSignature(eml, cert, store);

Remover Assinaturas de MapiMessages

Para melhor compatibilidade, o MapiMessage.RemoveSignature método e MapiMessage.IsSigned propriedades são usadas para remover uma assinatura digital de uma mensagem.

O trecho de código a seguir mostra como implementar esses recursos no seu projeto:

var msg = MapiMessage.Load(fileName);

if (msg.IsSigned)
{
    var unsignedMsg = msg.RemoveSignature();
}

Descriptografar MapiMessages com Certificados

Se você tem mensagens MAPI criptografadas e precisa descriptografá‑las usando a chave privada armazenada em um certificado, os recursos a seguir da Aspose.Email podem ser úteis:

O snippet de código a seguir mostra como trabalhar com mensagens MAPI criptografadas:

var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");

if (msg.IsEncrypted);
{
    var decryptedMsg = msg.Decrypt(privateCert);
}

Definir Categorias de Cor para Arquivos MSG

Uma categoria de cor marca uma mensagem de e‑mail para algum tipo de importância ou classificação. O Microsoft Outlook permite que os usuários atribuam categorias de cor para diferenciar e‑mails. Para manipular a categoria de cor, use o FollowUpManager. Contém funções como AddCategory, RemoveCategory, ClearCategories e GetCategories.

  • AddCategory recebe MapiMessage e a string da categoria de cor, por exemplo, "Categoria Roxa" ou "Categoria Vermelha" como argumentos.
  • RemoveCategory recebe MapiMessage e a string da categoria de cor a ser removida da mensagem.
  • ClearCategories é usado para remover todas as categorias de cor da mensagem.
  • GetCategories é usado para recuperar todas as categorias de cor de uma mensagem específica.

O exemplo a seguir executa as tarefas descritas abaixo:

  1. Adicionar uma categoria de cor.
  2. Adicionar outra categoria de cor.
  3. Recuperar a lista de todas as categorias.
  4. Remover todas as categorias.

Acessar Informações de Acompanhamento em Arquivos MSG

A API Aspose.Email oferece a capacidade de acessar as informações de acompanhamento de uma mensagem enviada ou recebida. Ela pode recuperar as informações de Recibo de Leitura, Recibo de Entrega e resultados de votação de um arquivo de mensagem.

Recuperar Informações de Recebimento e Confirmação de Leitura

O snippet de código a seguir mostra como recuperar informações de recibo de leitura e de entrega.

Criar Mensagens Encaminhadas e de Resposta

A API Aspose.Email fornece a capacidade de criar e formatar mensagens encaminhadas e de resposta. O ReplyMessageBuilder e ForwardMessageBuilder as classes da API são usadas para criar as mensagens Reply e Forward, respectivamente. Uma mensagem Reply ou Forward pode ser especificada para ser criada usando qualquer um dos modos de OriginalMessageAdditionMode enum. Este enum tem os seguintes valores:

  • OriginalMessageAdditionMode.None - A mensagem original não é incluída na mensagem de resposta.
  • OriginalMessageAdditionMode.Attachment - A mensagem original é incluída como anexo na mensagem de resposta
  • OriginalMessageAdditionMode.Textpart - A mensagem original é incluída como texto no corpo da mensagem de resposta

Criar Mensagens de Resposta

O trecho de código a seguir mostra como criar uma mensagem de resposta.

Criar Mensagens Encaminhadas

O trecho de código a seguir mostra como criar uma mensagem encaminhada.