email - 如何从 Powershell 脚本访问 Outlook 电子邮件正文?

标签 email powershell outlook outlook-2010

我的 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

  • Exchange Web Services - 可通过 EWS API(Web 服务的 .Net 绑定(bind))获得。
  • Extended MAPI - native 库接口(interface)。
  • 扩展 MAPI 接口(interface)的第三方 COM 包装器。 (如 Redemption )

  • 我想我将使用 EWS,尽管我不得不说界面相当复杂。

    感谢@TessellatingHeckler 为我指明了道路。

    关于email - 如何从 Powershell 脚本访问 Outlook 电子邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514338/

    相关文章:

    javascript - 在 Alfresco 中向多个收件人发送电子邮件

    windows - 我可以查询什么来查看 Windows 是否已启动并完成更新?

    powershell - 从Powershell(Get-ADuser)的写主机输出中删除某些字符

    javascript - 如何使用 javascript 连接到 Office 365 Outlook 日历

    vba - 当多个项目一次添加到 Outlook 文件夹时,如何触发事件?

    asp.net - TZOFFSETFROM 和 TZOFFSETTO 是什么意思

    python - 通过 Python 发送电子邮件的最简单方法

    php - 从本地电脑的 outlook php 读取电子邮件

    excel - 通过 VBA 发送多封电子邮件

    c# - 线程中的 powershell/runspace