Gestión de archivos adjuntos del mensaje
Gestión de adjuntos en Outlook
Creación y Guardado de Archivos de Mensaje Outlook (MSG) explica cómo crear y guardar mensajes, y cómo crear archivos MSG con adjuntos. Este artículo explica cómo gestionar los adjuntos de Microsoft Outlook con Aspose.Email. Los adjuntos de un archivo de mensaje se acceden y guardan en disco usando el MapiMessage clase Adjuntos propiedad. El Adjuntos propiedad es una colección del tipo MapiAttachmentCollection clase.
Comprobar tipo de adjunto (Incrustado o Regular)
Los adjuntos incrustados y los regulares cumplen diferentes propósitos. Los adjuntos incrustados se integran visualmente en el mensaje de correo electrónico y suelen ser imágenes o archivos multimedia. Mientras tanto, los adjuntos regulares son archivos separados adjuntos al correo y pueden incluir diversos tipos de archivos. The MapiAttachment.IsInline propiedad del MapiAttachment la clase obtiene un valor que indica si el adjunto es incrustado o regular.
El siguiente ejemplo de código extrae y muestra información sobre cada archivo adjunto en el MapiMessage cargado, incluidos sus nombres de pantalla y si son adjuntos incrustados o no.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Comprobar tipo de adjunto (IsReference)
El MapiAttachment la clase incluye el IsReference propiedad que permite a los desarrolladores identificar archivos adjuntos de referencia en un mensaje. Con el siguiente ejemplo de código, puedes verificar si un archivo adjunto es un adjunto de referencia:
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Guardar Adjuntos de Archivos MSG
Para guardar adjuntos de un archivo MSG:
- Iterar a través de MapiAttachmentCollection colección y obtenga los adjuntos individuales.
- Para guardar los adjuntos, llame al método Save() de la clase MapiAttachment.
El siguiente fragmento de código muestra cómo guardar los archivos adjuntos en el disco local.
Extraer adjuntos de archivos MSG formateados en RTF
Para mensajes formateados como RTF, el siguiente código puede usarse para diferenciar y extraer los adjuntos que son Incrustados o aparecen como ícono en el cuerpo del mensaje. El siguiente fragmento de código muestra cómo identificar y extraer un adjunto incrustado de un MSG formateado como RTF.
var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");
foreach (var attachment in eml.Attachments)
{
if (IsAttachmentInline(attachment))
{
try
{
SaveAttachment(attachment, Data.Out/new Guid().ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
static bool IsAttachmentInline(MapiAttachment attachment)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "\x0003ObjInfo")
{
var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
return (odtPersist1 & (1 << (7 - 1))) == 0;
}
}
return false;
}
static void SaveAttachment(MapiAttachment attachment, string fileName)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "Package")
{
using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
fs.Write(property.Data, 0, property.Data.Length);
}
}
}
Obtener adjuntos de mensajes de correo anidados
Los adjuntos OLE incrustados también aparecen en el MapiMessage colección de la clase Attachment. El siguiente ejemplo de código analiza un archivo de mensaje en busca de adjuntos de mensaje incrustados y lo guarda en el disco. The MapiMessage El método estático FromProperties() de la clase puede crear un nuevo mensaje a partir de un adjunto incrustado. El siguiente fragmento de código muestra cómo obtener adjuntos de mensajes de correo anidados.
Eliminar Adjuntos
La biblioteca Aspose Outlook proporciona la funcionalidad para eliminar adjuntos de archivos Microsoft Outlook Message (.msg):
- Llame al método RemoveAttachments(). Recibe la ruta del archivo del mensaje como parámetro. Está implementado como método estático público, por lo que no necesita instanciar el objeto.
El siguiente fragmento de código muestra cómo eliminar adjuntos.
También puedes llamar al MapiMessage método estático de la clase DestroyAttachment(). Funciona más rápido que RemoveAttachment(), porque el método RemoveAttachment() analiza el archivo del mensaje.
Agregar Adjuntos MSG
Un mensaje de Outlook puede contener otros mensajes de Microsoft Outlook como adjuntos, ya sea como mensajes regulares o incrustados. The MapiAttachmentCollection proporciona miembros sobrecargados del método Add para crear mensajes de Outlook con ambos tipos de adjuntos.
¡Pruébalo!
Agregar o eliminar adjuntos de correo electrónico con el gratuito Aspose.Email Editor App.
Agregar adjuntos de referencia a MapiMessages
El ReferenceAttachmentOptions La clase simplifica la adición de adjuntos de referencia al encapsular todas las propiedades necesarias en un solo objeto.
Parámetros de ReferenceAttachmentOptions:
- sharedLink: Un enlace compartido totalmente calificado al adjunto provisto por el servicio web que aloja el archivo.
- url: La ubicación del archivo o URL del recurso.
- providerName: El nombre del proveedor de adjuntos de referencia (p. ej., Google Drive, Dropbox).
- Ejemplo: Agregar un adjunto de referencia con ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive");
// Add reference attachment
msg.Attachments.Add("Document.pdf", options);
Incrustar Mensajes como Adjuntos
El siguiente fragmento de código muestra cómo incrustar un archivo MSG como adjunto en un mensaje.
Leer Mensajes Incrustados de Adjuntos
El siguiente fragmento de código le muestra cómo leer mensajes incrustados de los adjuntos.
Insertar y reemplazar adjunto
La API Aspose.Email permite insertar adjuntos en un índice específico en el mensaje padre. También proporciona la capacidad de reemplazar el contenido de un adjunto con otro adjunto de mensaje.
¡Pruébalo!
Ejecuta el ReplaceAttach proyecto de aplicación simple, y prueba las capacidades de Aspose.Email para reemplazar adjuntos en acción.
Insertar Adjuntos en Ubicaciones Específicas
La API de Aspose.Email proporciona la capacidad de insertar un adjunto MSG en un MSG padre usando el método Insert de MapiAttachmentCollection: MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). El siguiente fragmento de código muestra cómo insertar un adjunto en una ubicación específica.
Reemplazar Contenido del Adjuntos
Esto puede usarse para reemplazar el contenido de un adjunto incrustado con los nuevos usando el método Replace. Sin embargo, no puede usarse para insertar un adjunto con PR_ATTACH_NUM = 4 (por ejemplo) en una colección con collection.Count = 2. El siguiente fragmento de código muestra cómo reemplazar el contenido de un adjunto.
Renombrar adjuntos en MapiMessage
Es posible editar el valor de la propiedad DisplayName en los adjuntos de MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Guardar adjuntos de mensajes firmados digitalmente
La API Aspose.Email permite obtener o establecer un valor que indica si un mensaje con firma clara será decodificado.