Características y Funcionalidades

Características y Funcionalidades

Características y Funcionalidades

Esta página cubre cada característica principal de aspose-email-foss 26.3 con ejemplos funcionales de Python.


Lectura de archivos MSG

Cargue un archivo MSG y acceda a sus propiedades principales:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.from_file("message.msg")

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")

Creación de archivos MSG

Cree un nuevo mensaje desde cero:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")

Establezca el asunto y el cuerpo en un mensaje existente:

msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")

Destinatarios

Agregue destinatarios con nombres para mostrar y tipos:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Hello", "Message body")
msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)
msg.save("with_recipients.msg")

Adjuntos

Agregue adjuntos de archivos binarios:

with open("report.pdf", "rb") as f:
    data = f.read()

msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")

Incruste un mensaje MSG como un adjunto anidado:

inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")

Propiedades MAPI

Lea y escriba propiedades MAPI por ID de propiedad:

from aspose.email_foss.msg import PropertyId

# Read a property
subject = msg.get_property(PropertyId.SUBJECT)

# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")

Itere todas las propiedades:

for prop in msg.iter_properties():
    print(f"Tag: {prop.property_tag:#010x}")

Conversión de correo electrónico

Convertir entre formatos MSG (MAPI) y correo electrónico (RFC 5322):

# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])

# MSG to EmailMessage object
email_msg = msg.to_email_message()

# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")

Operaciones CFB de bajo nivel

Leer la estructura del contenedor CFB directamente:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")

for entry in reader.iter_storages():
    print(f"Storage: {entry}")

for entry in reader.iter_streams():
    print(f"Stream: {entry}")

reader.close()

Escribir documentos CFB:

from aspose.email_foss.msg import MsgWriter

data = msg.to_bytes()
with open("output.msg", "wb") as f:
    f.write(data)

Consejos y mejores prácticas

  • Siempre llame a msg.close() o use un administrador de contexto cuando haya terminado de leer para liberar los manejadores de archivo
  • Utilice msg.validation_issues para verificar problemas de cumplimiento del formato MSG
  • El strict parámetro en MapiMessage.from_file() controla la tolerancia a errores — establezca en False para un análisis indulgente
  • Todos los datos de los adjuntos se cargan en memoria durante from_file() — use att.data para acceder a los bytes directamente; iter_attachments_info() es un iterador de conveniencia sobre la lista de adjuntos ya poblada
  • Utilice to_email_string() para vistas previas rápidas de texto sin la construcción completa del objeto de correo

Problemas comunes

ProblemaCausaCorrección
CFBError al cargarNo es un archivo CFB/MSG válidoVerifique que el archivo sea un MSG real de Outlook
Cuerpo vacío después de cargarCuerpo almacenado solo en HTMLVerificar msg.body_html en lugar de msg.body
Destinatarios faltantesMSG no tiene almacenes de destinatariosLos destinatarios son opcionales en el formato MSG; verifique iter_attachments_info()

FAQ

¿Qué versiones del formato MSG son compatibles?

La biblioteca lee y escribe archivos MSG en formato CFB v3 y v4, compatible con Microsoft Outlook.

¿Puedo leer archivos EML?

No directamente. La biblioteca maneja el formato MSG. Use MapiMessage.from_email_message() para convertir desde RFC 5322 EmailMessage objetos.

¿Se admite la seguridad en hilos?

Cada MapiMessage y CFBReader la instancia es independiente. El acceso concurrente a instancias separadas desde hilos diferentes es seguro.


Resumen de la referencia de API

Clase / MétodoDescripción
MapiMessageRepresentación de mensaje MSG de alto nivel
MapiMessage.from_file()Cargar un archivo MSG
MapiMessage.create()Crear un nuevo mensaje MSG
MapiMessage.save()Guardar en archivo MSG
MapiMessage.to_email_message()Convertir a EmailMessage (RFC 5322)
MapiMessage.from_email_message()Convertir de EmailMessage a MSG
MapiMessage.add_recipient()Añadir un destinatario
MapiMessage.add_attachment()Añadir un archivo adjunto binario
MapiAttachmentArchivo adjunto en un mensaje
MapiRecipientDestinatario en un mensaje
MapiPropertyEntrada de propiedad MAPI
CFBReaderLector de contenedor CFB de bajo nivel
CFBWriterEscritor de contenedor CFB de bajo nivel
MsgReaderLector de estructura MSG de bajo nivel
 Español