【问题标题】:Create New Outlook 365 Email in PowerShell在 PowerShell 中创建新的 Outlook 365 电子邮件
【发布时间】:2020-02-03 21:12:11
【问题描述】:

我正在尝试在 PowerShell 中创建 Outlook 电子邮件,但我发现到处都是相同的代码:

$ol = New-Object -comObject Outlook.Application

$mail = $ol.CreateItem(0)
$mail.Subject = "<Subject>"
$mail.Body = "<Body>"

然后是

$inspector = $mail.GetInspector
$inspector.Display()

或者

$mail.Display()

显示电子邮件。

但是,在第一行我得到了这个错误:

New-Object : Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

我在没有-comObject 的情况下尝试过,但得到一个不同的错误:

New-Object : Cannot find type [Outlook.Application]: verify that the assembly containing this type is loaded.

我试过用

加载程序集
[Reflection.Assembly]::LoadWithPartialname("Microsoft.Office.Interop.Outlook") | out-null

但在运行之前的命令时仍会收到相同的错误消息。

以防万一,我们使用的是 Office 365,但我确实安装了 Office 的本地副本。我需要在 Office 365 中使用不同类型的对象吗?

此外,它似乎正在尝试与服务器联系以创建对象。我有办法强制它在本地这样做吗?

【问题讨论】:

  • 为什么要使用 Outlook?您不能直接通过Send-MailMessage 发送您的消息(如果您不知道后者,那么我建议使用它来发送您的消息)?
  • 贵公司有 smtp 服务器吗?
  • 它真的需要互动吗?即你需要看到电子邮件弹出在你面前吗?或者你只是想发送一封电子邮件?任何交互都需要安装客户端,并且无法可靠地自动化。
  • 回答所有 3 个问题...是的,我希望它是交互式的 - 主要是为了在发送之前可以查看最终电子邮件,并且可能进行编辑 - 这就是为什么我不使用Send-MailMessage。同样,我确实已经安装了一个客户端。我们没有本地 SMTP 服务器,但 Office 365 提供了一个。

标签: powershell email outlook office365


【解决方案1】:

CO_E_SERVER_EXEC_FAILURE 表示 Outlook 在与您的应用不同的安全上下文中运行。 COM 系统拒绝编组在不同安全上下文中运行的进程之间的调用。

【讨论】:

  • 这确实有帮助!我以管理员身份运行 PowerShell ISE,并将 Outlook 作为我的其他非特权帐户打开。一旦我以自己的身份打开 ISE,而不是以管理员身份运行,它就可以正常工作了。
猜你喜欢
  • 2010-11-20
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多