Python 试图从outlook获取过去3天的电子邮件,它几乎可以正常工作,但它';他跳过电子邮件,知道为什么吗?[内部代码]

Python 试图从outlook获取过去3天的电子邮件,它几乎可以正常工作,但它';他跳过电子邮件,知道为什么吗?[内部代码],python,api,email,outlook,Python,Api,Email,Outlook,这是代码 import win32com.client, datetime from datetime import timedelta def checkTime(): date_filter_unformated = datetime.date.today() - timedelta(days=3) date_filter = date_filter_unformated.strftime("%m/%d/%y %I:%M:%S") current_message =

这是代码

import win32com.client, datetime
from datetime import timedelta

def checkTime():
    date_filter_unformated = datetime.date.today() - timedelta(days=3)
    date_filter = date_filter_unformated.strftime("%m/%d/%y %I:%M:%S")
    current_message = all_messages.GetPrevious()
    message_time = current_message.ReceivedTime
    df_list = list(date_filter)
    mt_list = list(str(message_time))
    df_month, mt_month = int(''.join([df_list[0],df_list[1]])), int(''.join([mt_list[0],mt_list[1]]))
    df_day, mt_day = int(''.join([df_list[3],df_list[4]])), int(''.join([mt_list[3],mt_list[4]]))
    df_year, mt_year = int(''.join([df_list[6],df_list[7]])), int(''.join([mt_list[6],mt_list[7]]))
    if mt_year < df_year:
        return "Old"
    elif mt_year == df_year:
        if mt_month < df_month:
            return "Old"
        elif mt_month == df_month:
            if mt_day < df_day:
                return "Old"
            else:
                CurrentMessage(current_message)
                return "Pass"
        elif mt_month > df_month:
            CurrentMessage(current_message)
            return "Pass"

def CurrentMessage(cm):
    print cm.Sender, cm.ReceivedTime
    #

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6) # "6" refers to the index of a folder - in this case,
                                    # the inbox. Can change that number to reference
                                    # any other folder

all_messages = inbox.Items
current_message = all_messages.GetLast()

while True:
    if checkTime() == "Pass":
        continue
    if checkTime() == "Old":
        break
import win32com.client,datetime
从日期时间导入时间增量
def checkTime():
date\u filter\u unformated=datetime.date.today()-timedelta(天=3)
date\u filter=date\u filter\u unformated.strftime(“%m/%d/%y%I:%m:%S”)
当前消息=所有消息。GetPrevious()
消息时间=当前消息。接收时间
df_列表=列表(日期过滤器)
mt_列表=列表(str(消息时间))
df_month,mt_month=int(“”.join([df_list[0],df_list[1]]),int(“”.join([mt_list[0],mt_list[1]]))
df_-day,mt_-day=int(“”.join([df_-list[3],df_-list[4]]),int(“”.join([mt_-list[3],mt_-list[4]]))
df_year,mt_year=int(“”.join([df_list[6],df_list[7]]),int(“”.join([mt_list[6],mt_list[7]]))
如果mt_年df_月:
当前消息(当前消息)
返回“通行证”
def当前消息(cm):
打印cm.Sender,cm.ReceivedTime
#
outlook=win32com.client.Dispatch(“outlook.Application”).GetNamespace(“MAPI”)
inbox=outlook.GetDefaultFolder(6)#“6”是指文件夹的索引-在本例中,
#收件箱。你可以把那个号码改成参考号
#任何其他文件夹
所有邮件=收件箱。邮件
当前消息=所有消息。GetLast()
尽管如此:
如果checkTime()=“通过”:
持续
如果checkTime()=“旧”:
打破

因此,它应该返回过去3天内所有电子邮件的发件人姓名和收到日期,但相反,它会返回26日(今天)的部分电子邮件,然后是23日(3天前)的所有电子邮件,其间没有任何电子邮件。我不知道是什么导致它这样做的。有什么建议吗?

您假设邮件集合中的邮件已排序。只有在调用Items.Sort(
all\u messages.Sort(“[ReceivedTime]”,true)
之后,集合才会按特定顺序排序