获取所有电子邮件(包括服务器上的电子邮件)

时间:2019-12-30 22:47:30

标签: vb.net powershell outlook interop

这篇文章帮助了我Interop.Outlook - get all emails(Items) within a subfolder

我的问题是它只检索某些消息。我相信这与Outlook已同步多少邮件有关。如果我在Outlook中浏览文件夹,列表底部将显示“单击此处以在Microsoft Exchange上查看更多信息”。单击后,自然会显示其余消息。

通过互操作有可能吗?

Add-Type -LiteralPath "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Outlook.dll"
$oApp = [Microsoft.Office.Interop.Outlook.ApplicationClass]::new()
$oNamespace = $oApp.GetNamespace("MAPI")
$TargetFolder = $oNamespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)
$MailItemsWithAttachments = $TargetFolder.Items | Where-Object {$null -ne $_.Attachments} | Select-Object Subject, Attachments

最后一行是我认为需要调整的地方。随便提供一个VB / C#示例,我对两者都很熟悉。

1 个答案:

答案 0 :(得分:0)

发生的事情是它仅为您拉取缓存的内容,除非将缓存时间段设置为“全部”或禁用缓存,否则您将无法再提取任何内容。您可以通过以下方法进行禁用:转到帐户设置,单击“更改”,然后取消选中“使用缓存的交换模式”。