Gestionar mensajes Outlook
Guardar Correos como HTML
Aspose.Email permite guardar los recursos de correo electrónico con rutas relativas al exportar mensajes al formato HTML. Esta característica brinda mayor flexibilidad en cómo se enlazan los recursos en el archivo HTML resultante, facilitando compartir y mostrar correos guardados en diferentes sistemas. Para guardar los recursos con rutas relativas, use HtmlSaveOptions.UseRelativePathToResources propiedad. El valor predeterminado de la propiedad es false (los recursos se guardan con rutas absolutas). Cuando se establece en true, los recursos se guardan con rutas relativas.
Los archivos HTML con rutas relativas son más portátiles y pueden verse correctamente sin importar la estructura de archivos del entorno de alojamiento. Puede elegir entre rutas absolutas y relativas según los requisitos. Puede definir rutas personalizadas para los recursos usando el ResourceHtmlRendering evento.
El siguiente ejemplo de código demuestra cómo guardar un correo electrónico con la ruta relativa predeterminada a los recursos:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
En este caso, los recursos se guardarán en la carpeta [html file name]_files, en la misma ruta que el archivo .html y el HTML hará referencia a los recursos mediante rutas relativas.
El ejemplo de código a continuación demuestra cómo guardar con ruta absoluta a los recursos:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = false
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Al igual que en el primer caso, los recursos se guardarán en la carpeta [html file name]_files de forma predeterminada, pero el HTML hará referencia a los recursos usando rutas absolutas.
Al usar el ResourceHtmlRendering evento, puede establecer rutas relativas o absolutas personalizadas para los recursos. Al personalizar rutas con el ResourceHtmlRendering controlador de eventos, y ya que UseRelativePathToResources está configurado a true, debe asignar una ruta relativa al PathToResourceFile propiedad para garantizar referencias correctas.
El siguiente ejemplo de código demuestra cómo personalizar la ruta relativa usando el 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);
Convertir MSG a Mensajes MIME
La API Aspose.Email brinda la capacidad de convertir archivos MSG a mensajes MIME usando el ToMailMessage método.
Establecer Tiempos de Espera para la Conversión y Carga de Mensajes
Las siguientes características le permitirán establecer el tiempo de espera en milisegundos para el proceso de conversión y carga:
-
MailConversionOptions.Timeout propiedad - Limita el tiempo en milisegundos al convertir un mensaje.
-
MailConversionOptions.TimeoutReached - Se lanza si se agota el tiempo al convertir a MailMessage.
-
MsgLoadOptions.Timeout - Limita el tiempo en milisegundos al convertir un mensaje.
-
MsgLoadOptions.TimeoutReached - Se lanza si se agota el tiempo al convertir a MailMessage.
El siguiente ejemplo de código le mostrará cómo establecer un tiempo de espera al convertir un mensaje:
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);
Conversión de MSG a EML Conservando cuerpo RTF
La conversión de un archivo MSG a EML preservando el cuerpo RTF puede hacerse de dos maneras:
-
usando MsgLoadOptions.PreserveRtfContent propiedad del MsgLoadOptions class;
-
usando MailConversionOptions.PreserveRtfContent propiedad del MailConversionOptions class;
Ambas propiedades obtienen o establecen un valor que indica si se debe conservar el cuerpo rtf en MailMessage.
Los siguientes fragmentos de código muestran cómo convertir un archivo MSG a EML y preservar el cuerpo 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);
Manejo de Archivos de Plantilla de Outlook (.OFT)
Las plantillas de Outlook son muy útiles cuando desea enviar un mensaje de correo similar una y otra vez. En lugar de preparar el mensaje desde cero cada vez, primero prepare el mensaje en Outlook y guárdelo como una Plantilla de Outlook (OFT). Después, siempre que necesite enviar el mensaje, puede crearlo a partir de la plantilla, ahorrando tiempo al escribir el mismo texto en el cuerpo o la línea de asunto, configurar el formato, etc. Aspose.Email ofrece MailMessage la clase puede usarse para cargar y leer un archivo de plantilla de Outlook (OFT). Una vez que la plantilla de Outlook se carga en una instancia de la MailMessage clase, puede actualizar el remitente, destinatario, cuerpo, asunto y otras propiedades. Después de actualizar las propiedades:
- Enviar el correo usando el SmtpClient clase o
- Guardar el mensaje como MSG y realizar más actualizaciones/validaciones usando Microsoft Outlook.
En los ejemplos de código a continuación, nosotros:
- Cargar la plantilla usando el MailMessage clase.
- Actualizar algunas de las propiedades.
- Guardar el mensaje en formato MSG.
El siguiente fragmento de código muestra cómo cargar el archivo OFT, actualizar el mensaje y guardarlo en formato MSG.
Guardar Archivos MSG como Plantillas
El siguiente fragmento de código le muestra cómo guardar el archivo MSG de Outlook como una plantilla.
Determinar tipo de mensaje MAPI (OFT o MSG)
Al cargar un objeto MapiMessage desde un archivo, puede ser necesario determinar si el mensaje cargado es un archivo de plantilla o un correo electrónico normal. Al utilizar el IsTemplate propiedad del MapiMessage Con la clase, puedes detectar con precisión si un correo electrónico es una plantilla o no. Esta funcionalidad puede ser valiosa al manejar y procesar varios tipos de archivos de correo dentro de aplicaciones y sistemas.
El siguiente ejemplo de código muestra cómo determinar si un MapiMessage es OFT o 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
Guardar MapiMessage o MailMessage en formato OFT
El SaveOptions La clase permite especificar opciones adicionales al guardar un MailMessage o MapiMessage en un formato determinado.
El siguiente ejemplo de código demuestra cómo guardar un mensaje en 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);
}
Administrar mensajes firmados digitalmente
Aspose.Email implementa el algoritmo completo del objeto de correo S/MIME. Esto brinda a la API la capacidad total de preservar firmas digitales al convertir mensajes entre formatos.
Preservar Firma durante la Conversión de EML a MSG
Aspose.Email conserva la firma digital al convertir de EML a MSG. El siguiente fragmento de código le muestra cómo convertir de EML a MSG.
Convertir mensajes S/MIME de MSG a EML
Aspose.Email conserva la firma digital al convertir de MSG a EML como se muestra en el siguiente fragmento de código.
Comprobar firmas de correos seguros
Las siguientes funciones están disponibles para verificar la firma de objetos MapiMessage.
- SecureEmailManager clase para comprobar la firma de correos seguros.
- SmimeResult clase para almacenar los resultados de la verificación.
- SecureEmailManager.CheckSignature(MapiMessage msg) método.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt) método.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) método.
El siguiente ejemplo de código muestra cómo implementar las funciones en su proyecto:
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);
Eliminar firmas de MapiMessages
Para una mejor compatibilidad, el MapiMessage.RemoveSignature método y MapiMessage.IsSigned las propiedades se usan para eliminar una firma digital de un mensaje.
El siguiente fragmento de código muestra cómo implementar estas funciones en su proyecto:
var msg = MapiMessage.Load(fileName);
if (msg.IsSigned)
{
var unsignedMsg = msg.RemoveSignature();
}
Descifrar MapiMessages con certificados
Si tiene mensajes MAPI cifrados y necesita descifrarlos usando la clave privada almacenada en un certificado, las siguientes funciones de Aspose.Email pueden ser útiles:
- MapiMessage.IsEncrypted - Obtiene un valor que indica si el mensaje está cifrado.
- MapiMessage.Decrypt() - Descifra este mensaje (el método busca en los almacenes My del usuario y del equipo el certificado y la clave privada apropiados).
- MapiMessage.Decrypt(X509Certificate2 certificate) - Descifra este mensaje con certificado.
El siguiente fragmento de código muestra cómo trabajar con mensajes MAPI cifrados:
var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");
if (msg.IsEncrypted);
{
var decryptedMsg = msg.Decrypt(privateCert);
}
Establecer categorías de color para archivos MSG
Una categoría de color marca un mensaje de correo electrónico con algún tipo de importancia o categoría. Microsoft Outlook permite a los usuarios asignar categorías de color para diferenciar correos. Para manejar la categoría de color, use el FollowUpManager. Contiene funciones como AddCategory, RemoveCategory, ClearCategories y GetCategories.
- AddCategory toma MapiMessage y la cadena de categoría de color, por ejemplo, "Categoría Púrpura" o "Categoría Roja" como argumentos.
- RemoveCategory toma MapiMessage y la cadena de categoría de color que se eliminará del mensaje.
- ClearCategories se utiliza para eliminar todas las categorías de color del mensaje.
- GetCategories se utiliza para recuperar todas las categorías de color de un mensaje en particular.
El siguiente ejemplo realiza las tareas descritas a continuación:
- Agregar una categoría de color.
- Agregar otra categoría de color.
- Recuperar la lista de todas las categorías.
- Eliminar todas las categorías.
Acceder a información de seguimiento en archivos MSG
La API Aspose.Email proporciona la capacidad de acceder a la información de seguimiento de un mensaje enviado o recibido. Puede recuperar la información de lectura, recibo de entrega y resultados de votación de un archivo de mensaje.
Recuperar información de acuse de lectura y entrega
El siguiente fragmento de código le muestra cómo recuperar la información de recibos de lectura y entrega.
Crear mensajes de reenvío y respuesta
La API de Aspose.Email proporciona la capacidad de crear y formatear los mensajes de reenvío y respuesta. La ReplyMessageBuilder y ForwardMessageBuilder las clases de la API se usan para crear respectivamente los mensajes Reply y Forward. Un mensaje Reply o Forward puede especificarse para crearse usando cualquiera de los modos de OriginalMessageAdditionMode enumeración. Esta enumeración tiene los siguientes valores:
- OriginalMessageAdditionMode.None - El mensaje original no se incluye en el mensaje de respuesta.
- OriginalMessageAdditionMode.Attachment - El mensaje original se incluye como adjunto en el mensaje de respuesta
- OriginalMessageAdditionMode.Textpart - El mensaje original se incluye como texto en el cuerpo del mensaje de respuesta
Crear mensajes de respuesta
El siguiente fragmento de código muestra cómo crear un mensaje de respuesta.
Crear mensajes de reenvío
El siguiente fragmento de código muestra cómo crear un mensaje de reenvío.