如何在Python中搜索特定的Outlook邮件

3
我有以下代码,它的功能是读取我的Outlook收件箱中最新的电子邮件并打印该邮件的正文。但我想要能够指定一个固定的电子邮件地址,并返回该发件人的所有消息。我应该如何更改代码?
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
message = messages.Getlast
body_content = message.body
print body_content

我觉得只需将“messages.Getlast”更改为类似于“messages.Get('输入电子邮件地址')”这样的内容,就可以轻松实现,但结果并不如此。感谢您提前的任何帮助。
2个回答

4

您已经有了一个脚本,可以让您获取文件夹中的消息列表:

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items

一旦你收到所有的信息,你只需要检查消息发送者是否相同:

sender = "my_sender"
sender = sender.lower()
for message in messages:
    if sender in message.sender.lower():
        # This message was send by sender
        print message.body

该代码应打印出所有包含message.sender中的sender的消息体。

我添加了lower()函数,以避免大小写问题。您可能需要删除它。

希望这能帮到您。


永远不要遍历文件夹中的所有消息。这就像在SQL中有一个SELECT子句而没有WHERE一样。 - Dmitry Streblechenko

0

替换这一行

messages = inbox.Items

使用

messages = inbox.Items.Restrict("[SenderEmailAddress]='user@domain.demo'")

您可以遍历Items对象中的所有消息(messages集合)。请参阅Item.RestrictItems.Find帮助主题。

此外,请注意,GetLast(或GetFirst)不会返回最后一条(按接收时间排序的)消息-除非您显式调用Items.Sort指定某些排序标准,否则Items集合的排序顺序是不确定的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接