2017-04-04 3 views
0

이메일 전송을 테스트하려고하는데 스크립트에 일반 텍스트 비밀번호를 갖고 싶지 않습니다.안전한 비밀번호를 사용하여 Powershell을 통해 이메일 보내기

는 여기에 내가 무엇을, 그리고이 작품 :

$SmtpServer = 'smtp.office365.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = 'Hunter2' 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -UseSsl -Credential $Credentials 

이 작동합니다.

this stackoverflow thread의 조언에 따라이 스크립트를 자격 증명을 묻지 않고 실행하거나 일반 텍스트를 입력하지 않고 실행하면 예약 된 작업으로 실행할 수 있습니다.

나는 내가 실행하여 만든 보안 암호가 있습니다

read-host -assecurestring | convertfrom-securestring | out-file C:\Users\FubsyGamr\Documents\mysecurestring_fubsygamr.txt 

을하지만 제안 된 항목 내 $ smtpPassword 항목을 대체 할 경우 :

$SmtpServer = 'smtp.office365.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = cat C:\Users\FubsyGamr\Documents\mysecurestring_fubsygamr.txt | convertto-securestring 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -UseSsl -Credential $Credentials 

그런 다음 이메일을 전송하지 않습니다 더 이상. 다음 오류가 발생합니다.

Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

팁이 있습니까? 이 전자 메일 스크립트를 예약 된 작업으로 실행하고 싶지만 암호를 일반 텍스트로 저장하지 마십시오.

답변

1

동료가 $Credentials 개체가 내 암호를 일반 텍스트로 다시 변환하려고 시도했음을 깨달았습니다. ConvertTo-SecureSTring -AsPlainText -Force 수정자를 제거했으며 성공적으로 이메일을 보냈습니다!

작용 스크립트 :

$SmtpServer = 'smtp.office365.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = cat C:\Users\FubsyGamr\Documents\mysecurestring_fubsygamr.txt | convertto-securestring 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $smtpPassword 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -UseSsl -Credential $Credentials