如何使用python和通配符搜索特定的电子邮件主题?

pu82cl6c  于 2023-01-04  发布在  Python
关注(0)|答案(2)|浏览(188)

我想使用下面的代码来搜索今天进入“我的收件箱”的所有电子邮件,主题以“英国公司现金运动......"开头。通常电子邮件会以这个确切的主题进入,但结尾可以改变。在VBA中,我会使用通配符 *,但我不确定如何在Python中实现这一点。
我也还没有弄清楚如何只搜索今天收到的电子邮件。

import win32com.client
import datetime
import re
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.Folders("MyInbox")
inbox = folder.Folders.Item("Inbox")

messages = inbox.Items
messages.Sort("[ReceivedTime]", True)

for message in messages:
    if message.subject == 'Company UK Cash Movement.+':
        print("Found message")
    else:
        print("not found")
mdfafbf1

mdfafbf11#

尝试.startswith()

import win32com.client
import datetime
import re
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.Folders("MyInbox")
inbox = folder.Folders.Item("Inbox")

messages = inbox.Items
messages.Sort("[ReceivedTime]", True)

for message in messages:
    if message.subject.startswith('Company UK Cash Movement'):
        print("Found message")
    else:
        print("not found")
7jmck4yq

7jmck4yq2#

不要遍历文件夹中的所有项目。请使用Items.Find/FindNextItems.Restrict
您可以将以下查询传递给Items.Restrict(它将返回另一个带有游行的Items集合)。
您可以在PR_NORMALIZED_SUBJECT属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x0E1D001F)上创建查询。请注意,对主题的限制不起作用,因为它未被索引(只有规范化主题被索引)。

set matches = inbox.Items.Restrict("@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0E1D001F"" like '%Company UK Cash Movement%' ")
MsgBox matches.Count

相关问题