在outlook文件夹之间移动电子邮件,同时输入主题列表,并限制某些条件



我正在搜索"所有Outlook项目"然后根据我输入到代码中的主题列表查找电子邮件。一旦找到邮件,它就会被移到另一个文件夹中,并标记为"任务完成"。(电子邮件中的绿色勾号)。

然而,当我试图运行代码时,我有几个错误。如果有人能指导我,那就太棒了。

代码如下:

import win32com.client 

Email = 'johndoe@gmail.com'
subjects = input("Enter a list of subjects separated by commas: ").split(",")
MoveToFolder = "folder1"
Iter_Folder = "folder2"
def find_and_download_case_number_related_emails():
Outlook = win32com.client.Dispatch("Outlook.Application")
Outlook_Location = Outlook.GetNamespace("MAPI")
Lookin_Folder = Outlook_Location.Folders[Email].Folders[Iter_Folder]
Out_MoveToFolder = Outlook_Location.Folders[Email].Folders[MoveToFolder]
for message in Lookin_Folder:
if message.TaskCompleted:
continue
for message in Lookin_Folder:
if message.Subject in subjects:
message.Move(Out_MoveToFolder)
for message in Out_MoveToFolder:
message.MarkAsTaskCompleted()
if __name__ == "__main__":
find_and_download_case_number_related_emails()

,这是我现在得到的错误:

raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.Items. Did you mean: 'Item'?

下面这行代码包含了一个错误的属性调用:

outlook.Folders.Items.Restrict

Folders类不提供Items属性。您需要获得一个Folder实例,然后才使用Items属性。

我建议使用命名空间。GetDefaultFolder方法,该方法返回一个Folder对象,该对象表示当前配置文件的请求类型的默认文件夹;例如,获取当前登录用户的默认Inbox文件夹。

要了解RestrictFind/FindNext方法如何在Outlook中工作,您可以看看我为技术博客写的以下文章:

  • 如何:使用Find和FindNext方法从文件夹中检索Outlook邮件项目(c#, VB.NET)
  • 如何:使用Restrict方法从文件夹
  • 中检索Outlook邮件项目

最新更新