我的 Outlook 中有一个基本文件夹,其中包含来自监控系统的警报。我想根据该数据创建一个表。为此,我一直在尝试访问 Outlook 中电子邮件的正文内容:
Add-Type -Assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
$inbox = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)
$inbox.Items | Format-Table BodyFormat, Body, HTMLBody, RTFBody
现在我希望看到一些 Body、HTMLBody 或 RTFBody 的内容——我没有。我确实看到 BodyFormat 通常是 2 (olFormatHTML)。所以大多数电子邮件都应该在 HTMLBody 中包含内容——它们都没有。我可以访问主题行,但不能访问内容。
由于我在网上找到的每个示例似乎都能够获取正文内容,我认为它必须是 Outlook 中的设置,只能下载主题行或其他内容。我们有 Enterprise Vault——内容可以与消息分开存储吗?
最佳答案
基于MSDN documentation我相信这确实是防病毒软件通过对象模型保护阻止了对选择性属性的访问。这解释了为什么 $mm.Body
属性是 settable but not gettable .由于我无法访问我机器上的任何公司安全设置,我无法进一步追求互操作方向。
有几个workaround suggestions
我想我将使用 EWS,尽管我不得不说界面相当复杂。
感谢@TessellatingHeckler 为我指明了道路。
关于email - 如何从 Powershell 脚本访问 Outlook 电子邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514338/