如何写一个python脚本来读取我的Outlook的所有主题标题。。。在约会范围内吗?

2024-06-16 10:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python编写一个脚本来读取所有的主题标题,在一个日期范围内。。。但它不起作用

我尝试了不同的解决方案来阅读这个范围内的电子邮件,但我找不到比限制更好的选择,我还尝试使用[LastModificationTime]

DATA_RANGE_EMAIL = "[SentOn] > '10/01/2019 00:01 AM' AND [SentOn] < '10/10/2019 08:00 AM'"
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
utente = outlook.Folders("myaccount@myemail.com")
inbox = utente.folders("Inbox")
CRQ = inbox.folders("CRQ")
messages = CRQ.Items.restrict(DATA_RANGE_EMAIL)
message = messages.GetFirst ()
while message:
    sub = message.subject.encode("utf-8")
    print(sub)
    message_IN = messages.GetNext ()

现在脚本读取所有电子邮件,而不仅仅是该范围内的电子邮件。。。我做错什么了

谢谢所有给我提建议的人


Tags: 脚本message主题data电子邮件emailrangeam
1条回答
网友
1楼 · 发布于 2024-06-16 10:54:31

我很容易地用datetime对象来划分开始和结束点,从而解决了这个问题。唯一的问题是MailItem对象中的datetime对象附加了一个时区(tzinfo),为了与>;和<;去工作。但是,因为这是一个不可写的子类,所以我必须通过从头创建一个新的datetime对象并用它的值填充它来绕过这个限制

import win32com.client as win32
import datetime

dateRange_StartOn = datetime.datetime(2019, 10, 1, 0, 1)
dateRange_UpTo =  datetime.datetime(2019, 10, 10, 8, 0)
outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")
acc = outlook.Folders("myemail@myprovide.com")
inbox = acc.folders("Inbox") #Language-specific to the users GUI. "Inbox" is not a universal, internally fixed name

def tzInfo2Naive(in_dtObj): #Convert the tzInfo of the datetime object to naive (none)
    return datetime.datetime(in_dtObj.year,in_dtObj.month,in_dtObj.day,in_dtObj.hour,in_dtObj.minute)

for message in inbox.Items:
    sub = message
    timeReceived = message.ReceivedTime #datetime-object
    timeReceived = tzInfo2Naive(timeReceived)
    if timeReceived > dateRange_StartOn and timeReceived < dateRange_UpTo:
        print("%s :: %s" % (str(timeReceived), sub))

相关问题 更多 >