いろんなサーバー設定研究所

インフラエンジニアに役立つ各種設定やTipsを提供します Windows Server、Linux など

*

Powershellでメールを送信する最も簡単な方法

      2015/05/23

メール

Powershell で書いたスクリプトを毎日決まった時間に実行させ、実行結果を管理者宛てにメールで送信したいなぁ…なんて、よくありますよね。今回はPowershellでメールを送信する方法をご紹介です。


PowershellからSMTPサーバーを介してメールを送信する

早速サンプルコードです。


# 宛先メールアドレス
$to = "someone@contoso.com"

# 送信元メールアドレス
$from = "me@contoso.com"

# SMTPサーバー(IP、ホスト名どちらでも)
$smtp = "192.168.0.6"

# 件名
$subject = "Powershellからメールを送信する"

# 本文
[string]$body = @()
$body += "PowershellからSMTPサーバーを経由してメールを送信します。`n"
$body += "とっても簡単だね!"

# メールを送信します
Send-MailMessage -To $to -From $from -SmtpServer $smtp -Subject $subject -Body $body -Encoding UTF8

スクリプトの前半部分で宛先や送信元を定義しています。

ポイントとなる所はメールのbodyを定義しているところです。変数$bodyを配列として定義し、かつ[string]として変数の型を指定します。配列にすることで次々と文章を追加する事ができ、stringと宣言する事でメール送信時に使用するコマンドレット「Send-MailMessage」がメール本文として扱えるようになります。Powershellでメールを送信する時に、処理結果やエラーメッセージを追記したり改行をしようとした場合、この書き方が一番扱いやすいです。

最後に「Send-MailMessage」コマンドレットを使って指定した宛先にメールを送信します。この時、EncodeをUTF8にしないと文字化けをする環境が世の中には多いですので、かならずエンコードを行うようにしましょう。

Powershell v3 になりポートが指定できるようになったので、SMTPSが必須なSMTPサーバーへのメール送信も「Send-MailMessage」コマンドレットでできるようになりました。Powershellを使って運用業務をどんどん効率化していきましょう!

 - Power Shell