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:
-
MailConversionOptions.Timeout propriedade - Limita o tempo em milissegundos ao converter uma mensagem.
-
MailConversionOptions.TimeoutReached - Lançado se o tempo acabar ao converter para MailMessage.
-
MsgLoadOptions.Timeout - Limita o tempo em milissegundos ao converter uma mensagem.
-
MsgLoadOptions.TimeoutReached - Lançado se o tempo acabar ao converter para MailMessage.
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:
-
usando MsgLoadOptions.PreserveRtfContent propriedade do MsgLoadOptions class;
-
usando MailConversionOptions.PreserveRtfContent propriedade do MailConversionOptions class;
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:
- Carregue o modelo usando o MailMessage classe.
- Atualizar algumas das propriedades.
- 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.
- SecureEmailManager classe para verificar a assinatura de e‑mails seguros.
- SmimeResult classe para armazenar os resultados da verificação.
- SecureEmailManager.CheckSignature(MapiMessage msg) método.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt) método.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) método.
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:
- MapiMessage.IsEncrypted - Obtém um valor que indica se a mensagem está criptografada.
- MapiMessage.Decrypt() - Descriptografa esta mensagem (método procura nas lojas My do usuário e do computador o certificado e a chave privada apropriados).
- MapiMessage.Decrypt(X509Certificate2 certificate) - Descriptografa esta mensagem com certificado.
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:
- Adicionar uma categoria de cor.
- Adicionar outra categoria de cor.
- Recuperar a lista de todas as categorias.
- 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.