web-dev-qa-db-ja.com

Windows Server 2003 Powershell 2.0からOffice 365へのメール通知の送信

私のスクリプトは スケジュールされたタスクのエラーを吸収する 正しく完了せず、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 = "[email protected]"

#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 "[email protected]"  -Body $reportHTML -Subject 'Job(s) Failed' -UseSsl -SmtpServer 'smtp.office365.com' -From '[email protected]' -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 "[email protected]"  -Body $reportHTML -Subject 'Job(s) Failed' -UseSsl -SmtpServ
er 'smtp.office365.com' -From '[email protected]' -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 "[email protected]"  -Body $reportHTML -Subject 'Lois Job(s) Failed' -UseSsl -SmtpServ
er 'mail.somedomain.com' -From '[email protected]' -Credential $emailCred
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], Authentica
   tionException
    + FullyQualifiedErrorId : AuthenticationException,Microsoft.PowerShell.Commands.SendMailMessage

冗長で私はこれを手に入れます:

Send-MailMessage : The remote certificate is invalid according to the validation procedure.
At C:\ps\FailedJobNotificiation.ps1:17 char:17
+ Send-MailMessage <<<<  -Verbose -To "[email protected]"  -Body $reportHTML -Subject 'Job(s) Failed' -UseSsl
-SmtpServer 'mail.somedomain.com' -From '[email protected]' -Credential $emailCred
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], Authentica
   tionException
    + FullyQualifiedErrorId : AuthenticationException,Microsoft.PowerShell.Commands.SendMailMessage
3
leeand00

受け取った元のエラーメッセージを確認します。

SMTPサーバーは安全な接続を必要とするか、クライアントが認証されませんでした。サーバーの応答は、5.7.57 SMTPでした。 MAIL FROM中にクライアントが匿名メールを送信することを認証されませんでした

最初の提案(安全な接続の要件)は、did-UseSSLスイッチパラメータを使用してこのような要件への準拠をすでに指定しているため、おそらく無視できます。

私たちに残っているのは、あなたが提供した資格情報があなたを成功裏に認証しなかったという印象です。

その場合、SMTPサーバーはユーザーのIDを「匿名」として扱います。これは、送信ホストが明示的にホワイトリストに登録されていない限り、めったにメールの送信を許可されません。この観点から、SMTP応答メッセージ:

5.7.57 SMTP; MAIL FROM中にクライアントが匿名メールを送信することを認証されませんでした

突然、もっと理にかなっています。

私の推測では、SMTPアドレス([email protected])はnotがユーザープリンシパル名と同じ([email protected]または類似の名前)であり、認証が失敗する

2