我的 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
Run Code Online (Sandbox Code Playgroud)
现在我希望看到 Body、HTMLBody 或 RTFBody 的一些内容 - 但我没有。我确实看到 BodyFormat 最常见的是 2 (olFormatHTML)。因此,大多数电子邮件都应该在 HTMLBody 中包含内容——但没有一个这样做。我可以访问主题行,但不能访问内容。
由于我在网上找到的每个示例似乎都能够获取正文内容,我认为这一定是 Outlook 中的一个设置,仅下载主题行或其他内容。我们有 Enterprise Vault——内容可以与消息分开存储吗?
我有一堆二进制数据来自python,来自某些C接口的char*(不在我的控制之下)所以我有一串任意二进制数据(通常是一个字节数组).我想将它转换为字节数组,以简化其他python函数使用它,但我似乎无法弄清楚如何.
不起作用的示例:
data = rawdatastr.encode() 这假设"utf-8"并且破坏了数据== BAD
data = rawdatastr.encode('ascii','ignore') 剥离超过127的字符==坏
data = rawdatastr.encode('latin1') 不确定 - 这是目前为止最接近但我没有证据表明它适用于所有字节.
data = array.array('B', [x for x in map(ord,data)]).tobytes()这可行,但似乎做了很多简单的工作.有什么比这更简单的了吗?
我想我需要编写我自己的身份编码,只传递字节(我认为 latin1基于一些阅读但是到目前为止还没有证据).