es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución es utilizar la biblioteca pywin32 y la API COM de Outlook para iterar a través de las carpetas y subcarpetas, y extraer los archivos .msg utilizando el método SaveAs. Aquí tienes un código de muestra para comenzar:

    import os
    import win32com.client
    
    # Inicializar Outlook
    outlook = win32com.client.Dispatch("Outlook.Application")
    namespace = outlook.GetNamespace("MAPI")
    
    # Establecer la carpeta raíz
    root_folder = namespace.Folders.Item(1).Folders["carpeta"]
    
    # Definir una función recursiva para extraer archivos .msg de las carpetas y subcarpetas
    def extract_msgs(folder, dest_folder):
        for item in folder.Items:
            if item.Class == 43:  # 43 = olMail
                filename = os.path.join(dest_folder, item.Subject + ".msg")
                item.SaveAs(filename)
        for subfolder in folder.Folders:
            sub_dest_folder = os.path.join(dest_folder, subfolder.Name)
            os.makedirs(sub_dest_folder, exist_ok=True)
            extract_msgs(subfolder, sub_dest_folder)
    
    # Llamar a la función en la carpeta raíz
    extract_msgs(root_folder, "C:\\ruta\\hacia\\la\\carpeta\\de\\salida")
    

    Este código debe iterar a través de todas las carpetas y subcarpetas en la carpeta “carpeta”, y guardar cualquier archivo .msg que encuentre en la carpeta de salida especificada. Ten en cuenta que este código sobrescribirá cualquier archivo existente con el mismo nombre, por lo que puedes añadir lógica adicional para manejar ese caso. Además, dependiendo del tamaño de tus carpetas de Outlook y la cantidad de mensajes que contengan, este código podría llevar un tiempo en ejecutarse.

Comments are closed.