PowerShell の Send-MailMessage を使用して電子メールを送信する方法です。
Send-MailMessage
この例では、PowerShell から Send-MailMessage を使用して電子メールを送信する基本的な方法を記述します。
コマンド概要は次の通りです:
Send-MailMessage
[-Attachments <String[]>]
[-Bcc <String[]>]
[[-Body] <String>]
[-BodyAsHtml]
[-Encoding <Encoding>]
[-Cc <String[]>]
[-DeliveryNotificationOption <DeliveryNotificationOptions>]
-From <String>
[[-SmtpServer] <String>]
[-Priority <MailPriority>]
[-ReplyTo <String[]>]
[[-Subject] <String>]
[-To] <String[]>
[-Credential <PSCredential>]
[-UseSsl]
[-Port <Int32>]
[<CommonParameters>]
※コマンド内の設定やアドレス等は適宜お読み替えください
PowerShell から送信する
準備
PowerShell を起動します。PowerShell を起動する方法については、次のサポート記事をご参照ください:
単純な送信例
次のコマンドを実行して単純に電子メールが送信できるか確認します:
Send-MailMessage `
-from '[email protected]' `
-to '[email protected]' `
-subject 'testSubject' `
-body 'testMessage' `
-smtpServer 'xxx.xxx.xxx.xxx'
※ここで日本語を使用すると文字化けしますのでご注意ください
日本語を使用した送信例
日本語を使用する場合は UTF-8 にエンコードするように指定します:
Send-MailMessage `
-from '[email protected]' `
-to '[email protected]' `
-subject '件名' `
-body '本文' `
-smtpServer 'xxx.xxx.xxx.xxx' `
-Encoding ([System.Text.Encoding]::UTF8)
日本語と認証を使用した送信例
ユーザー名とパスワードで認証して送信します:
$mUser = '[email protected]';
$mPass = convertto-securestring 'password' -asplaintext -force;
$mCred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $mUser, $mPass;
Send-MailMessage `
-from $mUser `
-to $mUser `
-subject '件名' `
-body '本文' `
-smtpServer 'smtp.example.com' `
-Port '587' `
-Credential $mCred `
-Encoding ([System.Text.Encoding]::UTF8) `
-UseSSL
コマンド プロンプトから送信する
コマンド プロンプトを使用して電子メールを送信します。コマンド プロンプトを開く方法については、次のサポート記事をご参照ください:
次のコマンドを実行してコマンド プロンプトから電子メールを送信します:
powershell.exe -Command "& {Send-MailMessage -from '[email protected]' -to '[email protected]' -subject '件名' -body '本文' -smtpServer 'xxx.xxx.xxx.xxx' -Encoding ([System.Text.Encoding]::UTF8)}"
次のコマンドを実行してコマンド プロンプトから認証を使用した電子メールを送信します:
powershell.exe -Command "& {$mUser='[email protected]'; $mPass=convertto-securestring 'password' -asplaintext -force; $mCred=New-Object -typename System.Management.Automation.PSCredential -argumentlist $mUser, $mPass; Send-MailMessage -from $mUser -to $mUser -subject '件名' -body '本文' -smtpServer 'smtp.example.com' -Port '587' -Credential $mCred -Encoding ([System.Text.Encoding]::UTF8) -UseSSL}"
参考文献
コマンド詳細や電子メールを送信する方法等については、次の参考文献もご参照ください:
- Send-MailMessage (Microsoft.PowerShell.Utility) – PowerShell | Microsoft Docs
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-7 - Windows Server標準のメール通知の機能不足は「Send-MailMessage」コマンドレットで解決!:その知識、ホントに正しい? Windowsにまつわる都市伝説(137) – @IT
https://www.atmarkit.co.jp/ait/articles/1906/11/news006.html - タスクスケジューラに残された使えない機能の怪:その知識、ホントに正しい? Windowsにまつわる都市伝説(9) – @IT
https://www.atmarkit.co.jp/ait/articles/1407/01/news018.html
注意
- 本操作例は Windows 10 のものです
スポンサードリンク