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_issuespara verificar problemas de cumplimiento del formato MSG - El
strictparámetro enMapiMessage.from_file()controla la tolerancia a errores — establezca enFalsepara un análisis indulgente - Todos los datos de los adjuntos se cargan en memoria durante
from_file()— useatt.datapara 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
| Problema | Causa | Corrección |
|---|---|---|
CFBError al cargar | No es un archivo CFB/MSG válido | Verifique que el archivo sea un MSG real de Outlook |
| Cuerpo vacío después de cargar | Cuerpo almacenado solo en HTML | Verificar msg.body_html en lugar de msg.body |
| Destinatarios faltantes | MSG no tiene almacenes de destinatarios | Los 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étodo | Descripción |
|---|---|
MapiMessage | Representació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 |
MapiAttachment | Archivo adjunto en un mensaje |
MapiRecipient | Destinatario en un mensaje |
MapiProperty | Entrada de propiedad MAPI |
CFBReader | Lector de contenedor CFB de bajo nivel |
CFBWriter | Escritor de contenedor CFB de bajo nivel |
MsgReader | Lector de estructura MSG de bajo nivel |