使用 PowerShell 发送电子邮件时是不是可以指定 Exchange 版本?

Posted

技术标签:

【中文标题】使用 PowerShell 发送电子邮件时是不是可以指定 Exchange 版本?【英文标题】:Is it possible to specify Exchange version when sending email with PowerShell?使用 PowerShell 发送电子邮件时是否可以指定 Exchange 版本? 【发布时间】:2021-12-02 21:20:42 【问题描述】:

我正在尝试使用 PowerShell 通过 Exchange 发送电子邮件。是否可以指定要使用的 Exchange 版本?我不知道 Send-MailMessage 是否是正确使用的函数。

服务器需要用户名和密码,并且应该使用 Exchange2007_SP1。

运行以下代码返回“Send-MailMessage:服务不可用。关闭通道。服务器响应 4.3.2 服务不可用”。

所以看起来服务器得到了这个,但拒绝了它。

运行此程序的安全服务器没有直接的 Internet 连接,但可以访问 Exchange 服务器。因此,如果需要,我无法下载和安装插件到 PowerShell。

有什么想法吗?我是不是从错误的角度攻击这个?


$sendMailParams = @
    From = 'sender@somemailaccount.com' 
    To = 'johndoe@someexchangeserver.com'
    Subject = 'some subject here'
    Body = 'some body here'
    SMTPServer = 'exchange.server.com'
    UseSsl = $true
    Credential = $mailCred


Send-MailMessage @sendMailParams```

【问题讨论】:

如果在exchange.server.com 侦听 SMTP 提交的服务器是 Exchange 2007 服务器,那么它将使用它。 SMTP 本身没有机制来指示“请通过特定邮件服务器的特定版本进行路由” 如果您使用 SSL,您可能还需要指定端口。 Exchange 版本根本不重要。 它在从 UiPath 连接到 Exchange 时确实有效,但该应用程序有它自己的功能,它允许您指定要使用的 Exchange 版本。好像 PowerShell 没有... 难道 PowerShell 不是 Exchange 服务器上接受的应用程序? @Tom-IngeNilsen,尝试使用 -Port 465 指定默认 SSL 端口或删除 -UseSSL 行。我知道 Exchange 2007 也不支持 SMTP 的 TLS1.1/1.2,所以如果您碰巧在 powershell 中禁用了旧版本,那么这也可能导致问题(尽管可能是不同的错误)。 【参考方案1】:

这首先不起作用的原因是终端服务器上的 PowerShell 策略。出于安全原因,从 PowerShell 发送邮件已被禁用,因为您可以从任何人向任何人发送邮件。当你早上登录系统时,你会得到一个随机的终端服务器。如果我一直登录到同一个,它可能是在该特定终端服务器上启用它的一个选项。但实际上它太开放了,无法在所有服务器上启用它,所以这就是它被限制的原因。

如果将来情况发生变化,这可能是一种选择。

我知道这不是问题的直接答案,但它不再与我相关。 IT 表示,通过 PowerShell 发送时无需指定 Exchange 版本。

感谢您的所有投入,伙计们。你是最棒的。

【讨论】:

以上是关于使用 PowerShell 发送电子邮件时是不是可以指定 Exchange 版本?的主要内容,如果未能解决你的问题,请参考以下文章

Powershell 脚本无法使用任务计划程序通过 Outlook 发送电子邮件

powershell powershell脚本的模板。使所有错误“终止”并在发生错误时发送邮件

使用“1”参数调用“发送”的异常:“根据验证过程,远程证书无效。PowerShell

powershell脚本案例:当有人使用公共账户登陆服务器时,发送邮件到teams,shell脚本

powershell脚本案例:当有人使用公共账户登陆服务器时,发送邮件到teams,shell脚本

Powershell FileSystemWatcher 脚本在一些新文件上触发两次