LoginSignup
3

More than 5 years have passed since last update.

Powershellでテキストファイルの中身をメール送信する

Last updated at Posted at 2019-01-15

タイトルのような処理が必要ということでPowershellを使ってメールを送信するファイルを作ることに。
Powershellでメールなんて送ったことがないので調べつつ作っていきます。
前回同様今後また使うかもしれないのでメモ書き程度に。

組んでいく

・Powershellでメールを送るには

Send-MailMessageというコマンドレットでメールが送れるらしい。
送る本文の内容はテキストファイルから読み込みたいのでGet-Contentを使ってみる。

send.ps1
# 宛先メールアドレス
$to = "to@address.co.jp"

# 送信元メールアドレス
$from = "from@address.co.jp"

# SMTPサーバー
$smtp = "01.234.567.89"

# 件名
$subject = "Powershell Message test"

# 本文
[string]$body = @()
$body = (Get-Content D:\test\temp\send.txt) -join "`n"

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

ちなみに送りたいファイルは先日Qiitaに書いてみたSQLServerの使用率を表示させたもの。

send.txt
db_size
使用率…13%
使用率80%以下です。
-------------------------------------------------------------

db_log
使用率… 0%
使用率80%以下です。
-------------------------------------------------------------

・実行結果
きちんとfrom@address.co.jpよりto@address.co.jpへメールが送信され、本文もsend.txtの内容そのまま送信出来ていた。

ちなみに #本文 にある -join "`n"` がないと

db_size 使用率…13% 使用率80%以下です。 -------------------------------------------------------------  db_log 使用率… 1% 使用率80%以下です。

という風に改行されず送信されるみたいなので入れています。

後はencodeをUTF8にすることで、していないと文字化けしたりするらしい。気を付けよう。


2019/01/17 追記

コメントを頂きました。-raw オプションでもいけるとのこと。

実際試してみて、-rawのほうが断然いいですね。
調べてみましたが、-join "`n"`がないとダメみたいなことを書いていましたが、それはPowershell 2.0までらしい。
Powershell 3.0から -raw オプションが使えるみたいです。
3.0はWindows8やWindows Server 2012以降標準搭載みたいなのでこれからは -raw を使っていきます。

コメントありがとうございました!とても勉強になりました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3