Powershell Send-MailMessageコマンドはセキュリティ的に非推奨のようです。
便利なコマンドだったので使っていたこともあるのですが、代替えを検討する必要がありそうですね。。
質問の抜粋です。
PowerShellでメール送信用のコードを記述してメールを送信したいと考えております。
手元にPCが2台ありましてそれぞれ挙動が異なります。
1台目:正しく送信できる。OS:Windows 11
2台目:正しく送信できない。OS:Windows Server 2016
ソースコードは2者間で同一です。2台目だけエラーになる原因がわからず困っておりましてご教示頂けますと幸いでございます。
◆エラーコード
Send-MailMessage : 転送接続からデータを読み取れません: net_io_connectionclosed。
発生場所 C:\Temp\sample.ps1:8 文字:1
+ Send-MailMessage -from $mailfrom -to $mailto -subject $mailsubject -b ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage]、SmtpException
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
◆PowerShellのメール送信用ソースコード$mailuser = "hoge@fuga.com"
$mailpass = convertto-securestring "*********" -asplaintext -force
$mailcred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $mailuser, $mailpass
$mailfrom = "hoge@fuga.co.jp"
$mailto = "hoge@fuga.co.jp"
$mailsubject = "sample"
$mailbody = "sample"
Send-MailMessage -from $mailfrom -to $mailto -subject $mailsubject -body $mailbody -Encoding ([System.Text.Encoding]::UTF8) -smtpServer 'smtp.office365.com' -Port 587 -Credential $mailcred -UseSSL
ここで回答ですが、「 Send-MailMessage コマンドレットは廃止されたことに注意してください。 このコマンドレットは、SMTP サーバーへの安全な接続を保証しません。 」と記載がありますね。
ご質問、お問い合わせいただきありがとうございます。 Powershell からのメール送信に関連するクエリ\問題が発生していることは承知しております。
Send-MailMessage コマンドレットは廃止されたことに注意してください。 このコマンドレットは、SMTP サーバーへの安全な接続を保証しません。 PowerShell ですぐに使用できる代替品はありませんが、
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-5.1この場合、Telnet を使用して接続が確立されていることも確認してください。 1. ウイルス対策プログラムまたは一時的な目的で使用している Windows ファイアウォールを無効にします。
また、以下のパラメーターを使用して資格情報を受け入れるようにスクリプトを変更します
$Credential = 新しいオブジェクト System.Management.Automation.PSCredential $Username、$Password
「引用元」
Windowsサーバで簡単にメール通知ということで使用していたケースもあるかと思いますが、リプレース時などは代替え方法を検討する必要がありそうです。
![]() |