使用 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脚本