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.

Extraer la dirección de correo electrónico de los destinatarios en Outlook utilizando Python Win32com

Estoy tratando de extraer la dirección de correo electrónico del destinatario en Python utilizando el cliente Win32com.

Aquí está mi código hasta ahora:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.Folders("[mi dirección de correo electrónico]").Folders("Bandeja de entrada")

def obtener_direccion_de_correo():
    for mensaje in inbox.Items:
        print("========")
        print("Asunto: " + mensaje.Subject)
        print('Para:', mensaje.Recipients)    #esta parte no funciona
        print("Tipo de correo electrónico:", mensaje.SenderEmailType)
        if mensaje.Class == 43:
            try:
                if mensaje.SenderEmailType == "SMTP":
                    print("Nombre: ", mensaje.SenderName)
                    print("Dirección de correo electrónico: ", mensaje.SenderEmailAddress)
                    print('Para:', mensaje.Recipients)    #esta parte no funciona
                    print("Fecha: ", mensaje.ReceivedTime)
                elif mensaje.SenderEmailType == "EX":
                    print("Nombre: ", mensaje.SenderName)
                    print("Dirección de correo electrónico: ", mensaje.Sender.GetExchangeUser(
                                                              ).PrimarySmtpAddress)
                    print('Para:', mensaje.Recipients)    #esta parte no funciona
                    print("Fecha: ", mensaje.ReceivedTime)
            except Exception as e:
                print(e)
                continue

if __name__ == '__main__':
    obtener_direccion_de_correo()

Como puedes ver, puedo obtener la dirección de correo electrónico del remitente… ¿pero cómo obtengo la dirección de correo electrónico del destinatario?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para extraer la dirección de correo electrónico del destinatario utilizando win32com client en Python, puedes acceder a la propiedad message.Recipients, que devuelve un objeto Recipients. Luego, puedes recorrer el objeto Recipients para acceder a la dirección de correo electrónico de cada destinatario individual utilizando la propiedad Address.

    Aquí tienes un fragmento de código actualizado:

    import win32com.client
    
    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
    inbox = outlook.Folders("[mi dirección de correo electrónico]").Folders["Bandeja de entrada"]
    
    def obtener_direccion_correo():
        for mensaje in inbox.Items:
            print("========")
            print("Asunto: " + mensaje.Subject)
    
            # recorrer los destinatarios
            for destinatario in mensaje.Recipients:
                print("Para:", destinatario.Address)  # acceder a la dirección de correo electrónico de cada destinatario individual
    
            print("Tipo de correo electrónico: ", mensaje.SenderEmailType)
            if mensaje.Class == 43:
                try:
                    if mensaje.SenderEmailType == "SMTP":
                        print("Nombre: ", mensaje.SenderName)
                        print("Dirección de correo electrónico: ", mensaje.SenderEmailAddress)
    
                        # recorrer los destinatarios para el remitente SMTP
                        for destinatario in mensaje.Recipients:
                            print("Para:", destinatario.Address)
    
                        print("Fecha: ", mensaje.ReceivedTime)
                    elif mensaje.SenderEmailType == "EX":
                        print("Nombre: ", mensaje.SenderName)
                        print("Dirección de correo electrónico: ", mensaje.Sender.GetExchangeUser().PrimarySmtpAddress)
    
                        # recorrer los destinatarios para el remitente EX
                        for destinatario in mensaje.Recipients:
                            print("Para:", destinatario.Address)
    
                        print("Fecha: ", mensaje.ReceivedTime)
                except Exception as e:
                    print(e)
                    continue
    
    if __name__ == "__main__":
        obtener_direccion_correo()
    

    Ahora, la dirección de correo electrónico de cada destinatario individual se mostrará en la consola.

Comments are closed.