在PowerShell中创建新的Outlook 365电子邮件

在PowerShell中创建新的Outlook 365电子邮件,powershell,email,outlook,office365,Powershell,Email,Outlook,Office365,我正在尝试在PowerShell中创建Outlook电子邮件,我发现到处都有相同的代码: $ol = New-Object -comObject Outlook.Application $mail = $ol.CreateItem(0) $mail.Subject = "<Subject>" $mail.Body = "<Body>" 或 显示电子邮件 然而,在第一行我得到了这个错误: New-Object : Retrieving the COM class fac

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

$ol = New-Object -comObject Outlook.Application

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

显示电子邮件

然而,在第一行我得到了这个错误:

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一起使用


而且,它看起来像是试图接触服务器来创建对象。是否有办法强制它在本地执行此操作?

CO_E_SERVER_EXEC_失败意味着Outlook在与应用程序不同的安全上下文中运行。COM系统拒绝在不同安全上下文中运行的进程之间封送调用

为什么要使用Outlook?你不能直接通过send MailMessage发送邮件吗?如果你不知道后者,那么我建议你用它来发送邮件?你的公司有smtp服务器吗?它实际上需要交互吗?也就是说,你需要看到在你面前弹出的邮件吗?或者你只是想发封电子邮件?任何交互都需要安装客户端,并且无法可靠地自动化。要回答所有3个问题。。。是的,我希望它是交互式的-主要是为了在发送之前可以查看最后一封电子邮件,并可能对其进行编辑-这就是我不使用Send MailMessage的原因。同样,我已经安装了一个客户端。我们没有本地SMTP服务器,但是Office 365提供了一个。这确实有帮助!我以管理员身份运行PowerShell ISE,并将Outlook作为我的另一个非特权帐户打开。一旦我以自己的身份打开ISE,而不是以管理员的身份运行,它就工作得很好。
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