【问题标题】:Why does MailItem.Body return $null after being set?为什么 MailItem.Body 设置后返回 $null?
【发布时间】:2020-05-13 01:16:21
【问题描述】:

我已经在两台机器上运行了以下代码:

$ol = New-Object -ComObject Outlook.Application
$m = $ol.CreateItem(0)
$m.Body = "ASDF"
Write-Host $m.Body

在我的个人计算机(Windows 10 64 位、Outlook (Office16) 64 位)上,这会输出“ASDF”。

$Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      18362  145

$ol.Application.Version

16.0.0.11929

在我的工作机器(Windows 10 64 位、Outlook (Office16) 32 位)上,$m.Body 返回为 null,并且只有空行输出。我已经尝试过 32 位和 64 位版本的 PowerShell。

$Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  1146

$ol.Application.Version

16.0.0.4705

在两台机器上调用$m.Display() 会产生预期的结果:一封以“ASDF”为正文的电子邮件。问题是我无法以编程方式读取/获取邮件正文。


为什么在我的工作机器上尝试读取 $m.Body 时它似乎为空?


更新

我尝试了以下代码,但它只输出空行:

$ol = New-Object -ComObject Outlook.Application
$m = $ol.CreateItem(0)
$m.Body = "ASDF"
Write-Host $m.Body
$m.Save()
$m.Body = "ASDF"
Write-Host $m.Body

【问题讨论】:

    标签: powershell outlook outlook-addin


    【解决方案1】:

    Outlook 会缓存值,因此最好通过调用Save 来提交您的更改。

    尝试使用Save 方法使您的更改永久化。

    【讨论】:

    • 感谢您的回复。不幸的是,这没有奏效。还有其他想法吗?
    猜你喜欢
    • 1970-01-01
    • 2022-12-26
    • 2011-11-17
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2022-01-22
    • 2015-11-25
    相关资源
    最近更新 更多