得到所有或最后的电子邮件附件python

时间:2018-03-07 16:21:49

标签: python email winapi pywin32

我试图从我的电子邮件中获取所有附件,并给出电子邮件的特定标题,或者获取具有特定标题附件的最后一封电子邮件

到目前为止,我有以下内容:

import pandas as pd
import win32com.client
import os
import datetime as date
import time
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. You can change that number to reference
messages = inbox.Items
message = messages.GetLast()
val_date = date.date.today()

sub_today = 'GG in GD'

for item in messages:
    if item.Subject == sub_today:
        print(item.Subject)
        print(item.SentOn)
        attachments = item.Attachments
        attachment = attachments.Item(1)
        attachment.SaveAsFile(os.getcwd() + '\\' + str(attachment))
        Good_Data = pd.read_csv(os.getcwd() + '\\' + str(attachment))

因为这个脚本的下一部分要求我在2.7上运行它,所以我不确定如何修复此代码以获得我需要的内容。在3.6我可以这样做:

for item in messages:
    if item.Subject == sub_today and item.SentOn.date() == val_date:

理想情况下,我希望获得过去几天所有这些附件的列表,并抓住最新的附件,可能是日期。

我使用类型为item.SentOn的{​​{1}}遇到了问题。我已尝试将其转换为字符串,然后time,或从datetime.datetime.strptime()中减去某些内容并尝试查看其是否大于。{1}}。但我没有取得任何成功。

即使我尝试将time.time()对象转换为time,它也会变得混乱。

datetime

我想让它做类似的事情:

message.SentOn
<PyTime:3/7/2018 10:18:03 AM>

date.date.fromtimestamp(message.SentOn)
datetime.date(1970, 1, 1)

0 个答案:

没有答案