尝试提取电子邮件信息,如主题、发送、发件人/收件人信息等。这是我到目前为止所拥有的:
Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$folder = $namespace.getDefaultFolder($olFolders::olFolderInbox)
$Mail = $folder.items | where-object { conditions }
$Mail | Select-Object -Property <objects> | Export-CSV -NoTypeInformation C:.......file_name.csv
此代码仅检查收件箱文件夹中的邮件,这是第 5 行代码设置的原因。有什么方法可以从根目录运行吗?那么,它可以解析所有文件夹,如草稿,已发送邮件和已删除邮件?另外,有什么方法可以列出此邮件所在的确切文件夹并将其添加到 excel 文件中?
编辑
下面的代码列出了邮箱中的所有文件夹:
$Name = $namespace.Folders.Item(1).Folders | FT Name
有没有办法将每个文件夹名称一一存储到$Name
中,并使用它通过循环在下面的代码中搜索?
$folder = $namespace.Folders.Item(1).Folders.Item("$Name").Items
我建议使用 Items 类的 Find/FindNext 或 Restrict 方法来查找文件夹中与您的条件对应的项目。如果需要在多个文件夹中搜索,则需要使用应用程序类的高级搜索方法。
您会发现以下文章很有帮助:
- Outlook 中的高级搜索以编程方式:C#、VB.NET
- 如何:使用 Find 和 FindNext 方法从文件夹中检索 Outlook 邮件项目(C#、VB.NET)
- 如何:使用限制方法从文件夹中检索 Outlook 邮件项目