Я пытался написать скрипт powershell, который отправляет автоматическое электронное письмо как часть своего процесса, используя учетные данные пользователя, вошедшего в систему.Я нашел два основных метода для этого: Send-MailMessage
и использование объекта Net.Mail.SmtpClient
.
Я смог запустить его без проблем с помощью объекта Net.Mail.SmtpClient
Однако этот API помечен как устаревший, и поэтому я предпочел бы не использовать его, если это возможно, однако я не смог заставить Send-MailMessage
работать с использованием учетных данных по умолчанию.
Без UseDefaultCredentials
обоихприведенные ниже сценарии завершаются с тем же общим сообщением.
$smtpServer = "server.com"
$smtpFrom = "user@server.com"
$smtpTo = "user@server.com"
$messageSubject = "THIS IS WHERE YOUR SUBJECT GOES"
$messageBody = "This is a test of automated email at $([datetime]::Now.ToString('dd.MM.yyyy - HH.MM.SS'))"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.EnableSsl = $true
$smtp.Port = 587
#$smtp.UseDefaultCredentials = $true
$smtp.Send($smtpFrom,$smtpTo,$messagesubject,$messagebody)
и
$mailsplat = @{
SmtpServer = 'server.com'
From = 'user@server.com'
To = 'user@server.com'
Subject = 'THIS IS WHERE YOUR SUBJECT GOES'
Body = "This is a test of automated email at $([datetime]::Now.ToString('dd.MM.yyyy - HH.MM.SS'))"
Port = 587
UseSSL = $true
#UseDefaultCredentials = $true
}
Send-MailMessage @mailsplat
"SMTP-серверу требуется защищенное соединение или клиент не прошел проверку подлинности. Ответ серверабыл: 5.7.1 Клиент не был аутентифицирован "
Исправить первый скрипт легко.Если я раскомментирую строку UseDefaultCredentials
, она будет работать как положено.Однако для Send-MailMessage
нет параметра UseDefaultCredentials
или аналогичного параметра.Я бы предпочел использовать Send-MailMessage
, так как это рекомендуемый метод, а другой помечен как устаревший, но на самом деле я не могу найти способ заставить его работать с моими требованиями (несмотря на множество сообщений о том, что Send-MailMessage
будетиспользуйте учетные данные по умолчанию, если они не предоставлены, и документацию, указывающую на это)