通过Outlook发送电子邮件的Powershell脚本引发错误
Powershell脚本-通过Outlook发送电子邮件的Powershell脚本引发错误,powershell,Powershell,Powershell脚本- #Send Email $EncryptedCredential = "C:\creds.txt" $EmailUsername = "abc@domain.com" $EncryptedPW = Get-Content $EncryptedCredential | ConvertTo-SecureString $Credential = New-Object System.Management.Automation.Ps
#Send Email
$EncryptedCredential = "C:\creds.txt"
$EmailUsername = "abc@domain.com"
$EncryptedPW = Get-Content $EncryptedCredential | ConvertTo-SecureString
$Credential = New-Object System.Management.Automation.PsCredential($EmailUsername, $EncryptedPW)
$EmailFrom = "abc@domain.com"
$EmailTo = "abc@domain.com"
$EmailCC = "abc@domain.com"
$EmailSubject = "Test"
$EmailBody = "Test"
$SMTPServer = "smtp.office365.com"
$SMTPPort = 587
$SMTPSsl = $true
$param = @{
SmtpServer = $SMTPServer
Port = $SMTPPort
UseSsl = $SMTPSsl
Credential = $Credential
From = $EmailFrom
To = $EmailTo
CC = $EmailCC
Subject = $EmailSubject
Body = $EmailBody
}
Send-MailMessage @param
命令用于在powershell上运行脚本\Email.ps1
错误消息:发送邮件消息:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器
响应为:5.7.57客户端未通过发送邮件的身份验证。[MN2PR13CA001.namprd13.prod.outlook.com]
注意尝试了网络上所有可能的解决方法,但似乎没有解决问题。如果有人能帮忙的话。这些凭证是正确的吗?如果您使用
Get Credential
而不是您的文件技术来收集它们呢?密码是否已在文本文件中加密?如果是这样,则需要在转换为安全字符串之前对其进行解密。此外,如果要将凭据存储在文件中,一种更简单的方法是使用以下命令导出凭据:Get Credential | export Clixml-Path。\creds.xml
,然后使用以下命令再次读取凭据:$creds=Import Clixml-Path。\creds.xml
。该文件只能由同一台计算机上的同一用户读回-不完美,但比纯文本文件安全得多。标题有点误导,我以为您使用Outlook应用程序发送邮件,而不是使用PowerShell将邮件发送到Office365。我同意boxdog的观点,最可能的问题是你如何形成你的证书。我会尝试使用Get Credential
,看看这是否有效,然后从那里开始。