【发布时间】:2019-02-23 01:17:41
【问题描述】:
我有一个存储电子邮件变量/值的表,这些变量/值通过我的脚本中的 powershell 查询调用。
Send-MailMessage -From $From_Email -To $To_Email -Subject $Job_Success_Email_Subject -Body $Email_Body -SmtpServer $SmtpServer -port $SmtpPort -Credential $SmtpCredentials -usessl
我主要对从 DB 传递的用户名/密码凭据感兴趣,但在使用 Get-Credential 时出现此错误:
$SmtpCredentials = Get-Credential
Send-MailMessage : SMTP 服务器需要安全连接或客户端未通过身份验证。服务器 响应是:需要身份验证
如果我像这样从数据库传递我的凭据:
$SmtpPassword = $SmtpPassword | ConvertTo-SecureString -AsPlainText -Force
$SmtpCredentials = New-Object System.Management.Automation.PSCredential($SmtpUser,$SmtpPassword)
注意:密码暂时未加密,仅用于测试目的!
我收到这 2 个错误:
New-Object:找不到“PSCredential”的重载和 参数计数:“2”。
然后我得到一个凭据弹出登录,如果我什么都不输入,我得到这个错误:
Send-MailMessage:无法验证参数“凭据”上的参数。 参数为 null 或空。提供一个不为空的参数或 为空,然后重试该命令。
如果我手动输入凭据,我会改为:
Send-MailMessage : SMTP 服务器需要安全连接或 客户端未通过身份验证。服务器响应是:身份验证 必填
我知道这个错误有讨论和回答的线程,但我已经尝试了所有可能的解决方案,例如usessl 和ConvertTo-SecureString -AsPlainText -Force,但它不起作用。我也试过[string][ValidateNotNullOrEmpty()]$SmtpPassword,但这似乎也没有效果。
所以现在,为了确保它不是凭据本身的问题,我想使用类似Integrated Security=SSPI 之类的东西进行测试,比如 sql 连接字符串允许但发送邮件命令
【问题讨论】:
标签: powershell