通过Outlook发送电子邮件的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

Powershell脚本-

#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
,看看这是否有效,然后从那里开始。