ラージビッグバナー(970x90)

Linux

Windows(PowerShell)でコマンドを使ってメールを送信する方法

投稿日:

ビッグバナー(piglog)728px

スクリプト処理でエラーが発生した場合や処理結果を通知するためにコマンドでもメールを送信したいことがあります。一番シンプルにPowerShellでメールを送信する方法を紹介します。宛先を複数指定することも可能です。

ちなみに、PowerShellでGmailを使ってメールを送信する方法は以下で紹介しています。

【PowerShell】Gmailを送信するスクリプト

タイトルの通りですが、PowerShellを使ってGmail送信するスクリプトを作ったのでメモします。 バックアップなどの処理結果を、Gmailで通知できたらよいなぁと思って用意したもの。宛先を引数に ...

続きを見る

PowerShellでメールを送信する方法

PowerShell の メール送信コマンドレットは Send-MailMessage です。このコマンドレットを利用してメール送信する方法を紹介します。

以下が、ポイントとなるところです。

本文が複数行となる場合は改行を使う(↑だとみずらいですが、r と n の前はバッククォーテーションです)

本文の2行目以降は加算代入演算子(+=)を利用してつなげていく

Send-MailMessageコマンドで件名の変数$Subjectを指定するときはダブルコーテーションでくくっています。
これは件名にスペースが含まれていると、コマンド実行時に変数が展開されてスペースが引数の終わりだと認識されてしまうことを防ぐため。なので、件名にスペースが含まれていない場合は関係ないですが、含まれている場合はくくらないとエラーとなるので注意しましょう。

文字化けする場合は、-Encoding UTF8 を指定しましょう。

宛先が複数の場合の指定方法

メールを送信する宛先が複数ある場合は以下のようにカンマ区切りで指定できます。

ちなみにCcを利用したい場合は、オプション -Cc で指定できます。
Bcc を利用したい場合も同じく、オプション -Bcc で指定できます。

続いて、応用編を紹介します。

メール送信処理をFunction化

一回のバッチ処理などで、処理結果に応じてメールを自動送信させたり させたくなかったり したいときがあると思います。以下のように関数にすることで、スクリプトをきれいにかくことができます。

ポイントとしては、メール件名と本文のみ関数には含めないことです。こうすることで、何度もメール送信部分の処理だけ使いまわすことができます。

まとめ

スクリプト処理で自動化しているにもかかわらず処理が失敗していることに気づけないと困ったことになりますね。例えば、バックアップがとれていなかった、、、などはよく聞く話なので、チェックの処理を含めてメールで通知できるようにしておきたいです。

おまけ

ファイルを添付して送信したい場合は、オプション -Attachments で添付できるようです。

プライオリティなんかも指定できるみたいですね。(オプション -Priority

また、Linuxで同じようにmailコマンドで送信する方法は以下の記事でまとめています。

mailコマンドでSMTPサーバを指定してメール送信する方法

スクリプトのエラー判定後や処理結果を通知するために、mailコマンドでメールを送信したいことがあります。 スクリプトを実行するサーバでメールサーバを動かしていればよいですが、そうでないときは、SMTP ...

続きを見る

以上です。

↓↓↓ 持っていると便利な一冊 ↓↓↓

レクタングル (大)

レクタングル (大)

リンクユニット(レスポンシブ)

-Linux
-, ,

Copyright© ぴぐろぐ , 2019 All Rights Reserved.