Мой сценарий предназначен для отсасывать ошибки в запланированных задачах которые не заполняются правильно и отправляют их на мой адрес электронной почты через Office365:
$reportHTML = Get-Content C:\windows\tasks\SchedLgU.Txt | Select-String -Pattern "an exit code of \(1\)" -context 2
$reportHTML = Out-String -InputObject $reportHTML
#TODO Add an if statement
$emailUsername = "myemail@somedomain.com"
#TODO: Change this to a file....
#$emailPassword = cat "C:\ps\emailCred.txt" | convertto-securestring
$emailPassword = ConvertTo-SecureString "somepassword" -AsPlainText -Force
$emailCred = new-object -typename System.Management.Automation.PSCredential($emailUsername, $emailPassword)
Send-MailMessage -To "myemail@somedomain.com" -Body $reportHTML -Subject 'Job(s) Failed' -UseSsl -SmtpServer 'smtp.office365.com' -From 'myemail@somedomain.com' -Credential $emailCred
Но когда я запускаю его, я получаю следующее сообщение об ошибке:
Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server respons
e was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
At C:\ps\FailedJobNotificiation.ps1:14 char:17
+ Send-MailMessage <<<< -To "myemail@somedomain.com" -Body $reportHTML -Subject 'Job(s) Failed' -UseSsl -SmtpServ
er 'smtp.office365.com' -From 'myemail@somedomain.com' -Credential $emailCred
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpExcept
ion
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
Я тоже не могу указать порт, но мне кажется, что это может быть другая проблема, поскольку я получаю ответ от сервера. Есть ли причина, по которой я не могу отправить это электронное письмо? Я нашел кое-что на настройка ретранслятора SMTP, но мне это не удается.
Если вместо этого я использую домен, который мы используем для почты (somedomain.com
), Я получаю другое сообщение об ошибке аутентификации:
Send-MailMessage : The remote certificate is invalid according to the validation procedure.
At C:\ps\FailedJobNotificiation.ps1:16 char:17
+ Send-MailMessage <<<< -To "myemail@somedomain.com" -Body $reportHTML -Subject 'Lois Job(s) Failed' -UseSsl -SmtpServ
er 'mail.somedomain.com' -From 'myemail@somedomain.com' -Credential $emailCred
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], Authentica
tionException
+ FullyQualifiedErrorId : AuthenticationException,Microsoft.PowerShell.Commands.SendMailMessage
С Verbose я получаю следующее:
Send-MailMessage : The remote certificate is invalid according to the validation procedure.
At C:\ps\FailedJobNotificiation.ps1:17 char:17
+ Send-MailMessage <<<< -Verbose -To "myemail@somedomain.com" -Body $reportHTML -Subject 'Job(s) Failed' -UseSsl
-SmtpServer 'mail.somedomain.com' -From 'myemail@somedomain.com' -Credential $emailCred
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], Authentica
tionException
+ FullyQualifiedErrorId : AuthenticationException,Microsoft.PowerShell.Commands.SendMailMessage
Просмотрите исходное сообщение об ошибке, которое вы получили:
SMTP-серверу требуется безопасное соединение, иначе клиент не прошел аутентификацию. Ответ сервера был: 5.7.57 SMTP; Клиент не прошел аутентификацию для отправки анонимной почты во время MAIL FROM
Первое предложение (требование безопасного соединения), вероятно, можно проигнорировать из-за того, что вы сделал уже указать соответствие такому требованию, используя -UseSSL
параметр переключения
У нас осталось впечатление, что предоставленные вами учетные данные не прошли успешно.
Если это так, SMTP-сервер будет рассматривать вашу личность как «АНОНИМНЫЙ», личность редко разрешается отправлять электронные письма, если отправляющий узел явно не включен в белый список. В этом свете ответное сообщение SMTP:
5.7.57 SMTP; Клиент не прошел аутентификацию для отправки анонимной почты во время MAIL FROM
внезапно становится более понятным.
Я предполагаю, что ваш SMTP-адрес (myemail@somedomain.com
) является не то же самое, что и ваше основное имя пользователя (может быть myusername@corp.somedomain.com
или что-то подобное), что приводит к сбою аутентификации