Powershell:更改 outlook com 对象中的发件人姓名

Powershell: Change sender name in outlook com object

我想使用 Powershell 和 outlook 发送电子邮件,但发件人电子邮件需要不同。 目前这是我拥有的:

$OL = New-Object -comObject Outlook.Application
$mItem = $OL.CreateItem("olMailItem")

$mItem.SentOnBehalfOfName = "newEmail@email.com"
$mItem.To = "rec@email.com"
$mItem.Subject = "test"
$mItem.HTMLBody = "test"
$mItem.send()

我的 IT 管理员给了我一个额外的 outlook 电子邮件地址。 所以我添加了 SentOnBehalfOfName 行,但我收到错误邮件:“无法发送此消息。您无权代表指定用户发送消息。”

有谁知道需要什么权限吗? 我有一个解决方案的想法,但我不知道它是否可行。我的 outlook 有我的默认个人资料地址。 name@email.com 及其在系统某处的主要邮件,因此当我通过 powershell 发送 outlook 电子邮件时,它会使用它。有没有办法切换到给我的新版本?如果新的是共享电子邮件,即使我是唯一的,它仍然有效吗?

谢谢

编辑:请注意,通过更改“发件人”选项直接从 Outlook 执行此操作对我来说确实有效。所以现在我只需要通过 powershell 来完成。我也尝试设置 $mItem.Sender 但我得到了同样的错误。

您需要拥有该用户的“发送为”权限。

您无权代表他人发送。

在 Exchange Server 中,您可以使用 Exchange 管理中心 (EAC) 或 Exchange 管理 Shell 为邮箱或组分配权限,以便其他用户可以访问该邮箱(完全访问权限) , 或发送看似来自邮箱或组的电子邮件(代理发送或代表发送权限)。被分配了对其他邮箱或组的这些权限的用户称为委托。在 Manage permissions for recipients 文章中阅读更多相关信息。

Grant Send on Behalf Permissions using Powershell 页面显示了可用于以编程方式设置权限的代码。

请注意,您可以考虑在 Outlook 中配置另一个帐户。在这种情况下,您无需特殊权限即可发送电子邮件。 MailItem.SendUsingAccount 属性 允许设置一个 Account 对象,代表要发送 MailItem 的帐户。