Cómo comenzar con Aspose.Email FOSS para Python
aspose-email-foss Python es una biblioteca gratuita y licenciada por MIT para crear, leer y Convertir archivos de Outlook MSG y contenedores CFB — no se requiere Microsoft Office, no es nativo Extensiones, Python puro de PyPI.
Guía paso a paso
Paso 1: Instalar el paquete
Instalar desde PyPI con pip:
pip install aspose-email-fossVerifique la instalación cargada correctamente:
from aspose.email_foss.msg import MapiMessage
print("aspose-email-foss is ready.")Paso 2: Importar las clases necesarias
Importa los módulos que necesitas para la creación de mensajes, asignación de propiedades y conversión de formatos:
from datetime import datetime, timezone
from aspose.email_foss import msg
from aspose.email_foss.msg import MapiMessage, PropertyIdPaso 3: Crear un archivo MSG
Uso MapiMessage.create() para crear un mensaje con un sujeto y cuerpo. establecer metadatos de envío con PropertyId constantes, añadir recientes y agregar un archivo.
message = MapiMessage.create("Getting Started", "Hello from aspose-email-foss!")
message.set_property(PropertyId.SENDER_NAME, "Build Agent")
message.set_property(PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
message.set_property(
PropertyId.MESSAGE_DELIVERY_TIME,
datetime(2026, 1, 1, 9, 0, tzinfo=timezone.utc),
)
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_attachment("notes.txt", b"Meeting notes go here.\n", mime_type="text/plain")
message.save("getting-started.msg")
print("getting-started.msg written.")Paso 4: Leer el archivo de MSG de vuelta
Cargar el archivo salvado utilizando MapiMessage.from_file() como administrador de contexto. Acceso a la subject y body propiedades directamente del objeto devuelto.
with MapiMessage.from_file("getting-started.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body : {message.body}")Paso 5: Convertir el MSG en EML
to_email_bytes() Convertir el mensaje cargado en formato RFC 5322 .Escribe el resultado a a .eml archivos con la biblioteca estándar.
from pathlib import Path
with MapiMessage.from_file("getting-started.msg") as message:
Path("getting-started.eml").write_bytes(message.to_email_bytes())
print("getting-started.eml written.")Problemas y soluciones comunes
ModuleNotFoundError: No module named 'aspose' El paquete no está instalado en el entorno de Python activo. pip install aspose-email-foss en el mismo entorno virtual que está utilizando para ejecutar su script. confirmar con pip show aspose-email-foss.
FileNotFoundError Cuando llamar MapiMessage.from_file() El camino que pasaste no existe o utiliza el separador equivocado para su sistema operativo. pathlib.Path Para construir caminos por vía: MapiMessage.from_file(Path("folder") / "file.msg").
El archivo MSG se abre en Outlook pero no muestra ningún tema. MapiMessage.create() se le concede el primer argumento de posición. si usted ha pasado una línea vacía, Outlook muestra la mensaje como sin título. pasar una cadena no vacia o configurarla explicitamente con set_property(PropertyId.SUBJECT, "My Subject").
La conversión de EML produce un cuerpo vacío to_email_bytes() Usar body_html Si se pone y cae de vuelta a body.Confirmamos que en Al menos una de estas propiedades no es vacía después de cargar el MSG con from_file().
El contenido de unicode en los destinatarios o sujetos se truncó Paso unicode_strings=True para MapiMessage.create() Para garantizar que las propiedades de la línea son En el caso de que se haya registrado un código Unicode (PT_UNICODE) en lugar de ANSI ( PT_STRING8).
Preguntas frecuentes
¿Es necesario el correo electrónico de aspose para Microsoft Office?
La biblioteca es totalmente autónoma. lee y escribe los formatos binarios MSG y CFB nativos en Python sin ninguna dependencia de Microsoft Office, COM automation o Win32 APIs.
¿Puedo usar esta biblioteca en Linux o macOS?
Sí sí. aspose-email-foss Python es puro y se lleva a cabo en cualquier plataforma que apoye Python 3.10 o más tarde, incluidas Windows, macOS, Linux, contenedores de Docker y funciones sin servidor.
¿La biblioteca es libre para uso comercial?
Usted puede usar, modificar y redistribuirlo para cualquier propósito, incluidas las aplicaciones comerciales, sin royalties o requisitos de atribución más allá del texto de la licencia.
¿Cómo puedo agregar recientes CC y BCC?
Paso recipient_type=msg.RECIPIENT_TYPE_CC o msg.RECIPIENT_TYPE_BCC Como el tercero Argumento a add_recipient():
message.add_recipient("bob@example.com", display_name="Bob", recipient_type=msg.RECIPIENT_TYPE_CC)¿Cómo puedo incorporar un MSG dentro del otro?
Uso MapiMessage.add_embedded_message_attachment(),Pasando por el interior MapiMessage El argumento como primer argumen:
inner = MapiMessage.create("Inner message", "Embedded body.")
outer = MapiMessage.create("Outer message", "See attachment.")
outer.add_embedded_message_attachment(inner, "inner.msg")
outer.save("outer.msg")