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.

Contando correos electrónicos de la carpeta de bandeja de entrada en Outlook con Python (valor incorrecto)

Estoy desarrollando un script en Python que contará el número de correos electrónicos en mi carpeta de Bandeja de entrada en Outlook, dentro de un rango de fechas.

Estoy utilizando “Restrict” para establecer un límite para los correos electrónicos que verifico. La variable “fecha” ahora es estática solo para pruebas.

El problema es que si configuro el filtro 11 días atrás, el recuento es correcto (verificado manualmente en mi bandeja de entrada), pero si configuro 12+ días atrás como filtro, el recuento es incorrecto (mucho más de lo que debería). En el recuento correcto, obtengo alrededor de 200 correos electrónicos en promedio. En el recuento incorrecto, obtengo alrededor de 7000.

¿Alguien sabe por qué sucede esto y si hay algún parámetro que deba cambiar para obtener los datos correctos?

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.Folders('cuenta@dominio.com').Folders('Bandeja de entrada')
mensajes_bandeja = inbox.Items
mensajes_bandeja.Sort("[ReceivedTime]", True)

fecha = now - datetime.timedelta(days=13)  # días=11, cuenta bien, días=12 cuenta mucho más (de 2566 a 9479)
fecha = fecha.replace(hour=0, minute=0, second=0)
print(fecha)
rec_mensajes_ultimo_mes = mensajes_bandeja.Restrict("([ReceivedTime] >= '" + fecha.strftime('%m/%d/%Y %H:%M %p') + "')")

print(len(rec_mensajes_ultimo_mes))
print(fecha)
<code>
La salida de este código es:
</code>none
1141
2021-12-25 00:00:00.763213

Finalmente encontré mi error. Se debía al formato de fecha al enviar la fecha (fecha) a Outlook. Estaba pasando mes-día-año, cuando la búsqueda de Outlook interpretaba día-mes-año. Arreglé eso y finalmente obtuve el valor correcto. Gracias a todos por el esfuerzo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema reside en el formato de fecha que se está pasando a Outlook. Actualmente, el código está pasando la fecha como mes/día/año, mientras que Outlook puede esperarlo en formato día/mes/año. Esta discrepancia podría estar causando que el filtro se comporte incorrectamente y devuelva resultados incorrectos.

    Para solucionar esto, intenta cambiar el formato de la variable “fecha” a día/mes/año antes de pasarlo al filtro. Puedes utilizar la función strftime para convertir la fecha al formato deseado.

    Por ejemplo:

    fecha = now - datetime.timedelta(days=13)
    fecha = fecha.replace(hour=0, minute=0, second=0)
    fecha_str = fecha.strftime('%d/%m/%Y %H:%M %p')
    rec_messages_pastmonth = messages_inbox.Restrict("([ReceivedTime] >= '{}')".format(fecha_str))
    

    Esto debería asegurarse de que el filtro esté utilizando el formato de fecha correcto y devolviendo los resultados correctos.

Comments are closed.