我正在尝试使用Python 3.6将子文件夹(默认文件夹下的文件夹)从Outlook 2010复制/同步到Outlook外部的目录。我知道如何使用默认文件夹(收件箱,草稿,已发送邮件等)来执行此操作,因为可以通过Bobby针对this问题的答案中详细介绍的方法来访问默认文件夹。例如,我编写了将电子邮件从收件箱复制到任意目录的代码:
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
for message in messages:
try:
path='C:\\test1\\'+message.Subject.replace('/','-').replace(':','-')+'.msg'
message.SaveAs(path)
except:
print('Error with '+message.Subject)
del outlook, message
但是,我需要访问较低目录的帮助。下面是我正在谈论的屏幕截图。
在此图像中,红色箭头指向默认的收件箱,我发布的代码可以从中复制电子邮件。图像中的蓝色箭头指向我要遍历的目录。
在我之前链接的question中,Ozzius表示这是可能的,并且提供了示例代码,尽管我无法使其正常工作。
[[[谁能告诉我如何或最好向我指出有关如何遍历这些子目录的文档和示例吗?我的最终目标是自动将这些文件夹中的电子邮件复制到共享驱动器,以便其他人从事这些项目可以访问它们。
这是我有关堆栈溢出的第一个问题,因此,如果您需要更多信息,或者是否在错误的位置被问到,请告诉我。folders = root_folder.Folders
for folder in folders:
print('{0} is under {1}',format(folder.Name, root_folder.Name))
您可以递归地链接这样的调用,以遍历所有子文件夹。要将电子邮件另存为.msg
文件,可以使用以下代码
mail_item.SaveAs(email_local_copy_path)