我在用Python 3。 我正在尝试按日期提取(列表/打印显示)outlook电子邮件。
我在尝试一个循环。。也许是WHILE或者IF语句。
既然一个是字符串,另一个是日期,能做到吗。 请简要说明我到目前为止的情况:谢谢。
1. import win32com.client, datetime
2.
3. # Connect with MS Outlook - must be open.
4. outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
5. # connect to Sent Items
6. sent = outlook.GetDefaultFolder(5).Items # "5" refers to the sent item of a folder
7.
8. # Get yesterdays date
9. y = (datetime.date.today () - datetime.timedelta (days=1))
10. # Get emails by selected date
11. if sent == y:
12. msg = sent.GetLast()
13. # get Subject line
14. sjl = msg.subject
14. # print it out
15. print (sjl)
COM API文档相当全面,您可以看到类列表,例如here。它还记录了可以用来操作它拥有的对象的各种方法。在您的特定示例中,您所追求的是通过日期限制您的项集。在items类here中,您将看到已经有一个用于此的函数。这就叫限制。我能看到的唯一一个问题是,你需要以字符串形式指定你想要的过滤器,从而要求你自己构造字符串。
例如,要继续执行代码并按时间限制:
当然,您可以通过各种条件进行限制,只需检查函数的文档即可。这样,如果您进行了限制,并且它返回了一组空的项,那么您可以在代码中处理这种情况,而不必处理异常。例如:
我完成了密码。谢谢你的帮助。
这很管用。但是,如果没有根据约束找到消息,则不会退出。我试着打破,只是发现一个信息,而不是所有,我想知道是否和如何做一个例外?或者我试试别的d!=它也不起作用的日期(它找不到任何东西)。 我看不出For循环将使用带有msg(字符串)的日期。 我不确定——这里是比金纳:) ??
outlook API有一个方法^{} ,用于搜索
.Items
的内容。如果这是你想做的事情的范围,那可能就是你应该做的。现在,您的if语句似乎正在检查一组电子邮件是否等于昨天的电子邮件。
微软的文档说,
.Items
返回一个电子邮件集合,您首先必须使用几个不同的方法(包括Items.GetNext
)或通过使用Items.Item
引用一个特定的索引来遍历它。然后您可以接收当前电子邮件并访问^{} property.
这应该遍历sent文件夹中的所有消息,直到
sent.GetNext()
没有更多的消息可返回。您必须确保y
的格式与.SentOn
返回的格式相同。如果您不想遍历每个消息,您可能还可以嵌套两个循环,这两个循环返回到消息中,直到它到达昨天,迭代到不再在“昨天”内,然后中断。
相关问题 更多 >
编程相关推荐