こんにちは、サイオステクノロジーの小川です。今回はWindows Serverで指定したファイルをメール送信して通知する機能を実装する案件があり、調査したところVBScriptを利用することで機能を実装できたので、そのTipsとしてブログにしたい思います。
メール通知スクリプト
メール通知スクリプトを以下に記載します。今回はファイル名をmail.vbsとします。
'------------------------------------
' 変数を定義
'------------------------------------
Dim filePath
Dim text
Dim log
'------------------------------------
' メール通知内容ファイルパスの指定
'------------------------------------
filePath = "C:\AppFolder\log-file.txt"
'------------------------------------
' テキスト設定
'------------------------------------
text = Date & "の結果は以下の通りです。" 'Dateは日付の関数
'------------------------------------
' ファイルの読み込み 'メール本文にログファイルの内容を記載する場合この設定をする
'------------------------------------
Set fileRead = CreateObject("Scripting.FileSystemObject") 'ファイルの読み込みのオブジェクト設定
Set fileText = fileRead.GetFile(filePath).OpenAsTextStream 'ファイルの中身をテキスト化する設定
log = fileText.ReadAll 'ファイルを1行ずつ読み込む
fileText.close 'テキスト化の終了
Set fileRead = Nothing '読み込み設定の終了
'------------------------------------
' オブジェクトの定義
'------------------------------------
Set oMsg = CreateObject("CDO.Message")
'------------------------------------
' 送信元・送信先を定義
'------------------------------------
oMsg.From = "送信元アドレス"
oMsg.To = "宛先アドレス"
'------------------------------------
' 件名・本文
'------------------------------------
oMsg.Subject = "出力ログ通知"
oMsg.TextBody = text & vbCrLf & vbCrLf & log 'textとログファイルの設定を本文にする(vbCrLfは改行)
oMsg.TextBody = text & vbCrLf 'ログファイルを添付する場合、変数logはいらない
'------------------------------------
' サーバー設定
'------------------------------------
strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"
With oMsg.Configuration.Fields
.Item(strConfigurationField & "sendusing") = 2 '設定値の説明は以下に記載
.Item(strConfigurationField & "smtpserver") = "smtpサーバー名"
.Item(strConfigurationField & "smtpserverport") = "smtpポート"
.Item(strConfigurationField & "smtpusessl") = true/false 'use sslの設定
'------------------- smtp認証を設定する場合以下を設定 ------------
.Item(strConfigurationField & "smtpauthenticate") = 2 '1(Basic認証)/2(NTLM認証)
.Item(strConfigurationField & "sendusername") = "送信ユーザー名" 'smtp-authを利用する場合必要
.Item(strConfigurationField & "sendpassword") = "送信パスワード" 'smtp-authを利用する場合必要
.Item(strConfigurationField & "smtpconnectiontimeout") = 60
'--------------------------------------------------------------
.Update
end With
'------------------------------------
' 添付ファイルの設定 (ファイルを添付しない場合は設定しない)
'------------------------------------
oMsg.AddAttachment(filePath) '添付ファイルの設定
'------------------------------------
' 送信
'------------------------------------
on error resume next
oMsg.Send 'メール送信設定(この設定のみでも問題ない)
if Err.Number <> 0 then
strMessage = Err.Description 'メール送信に失敗した場合、エラーをコマンドに出力
else
strMessage = "Email has been sent." '送信が完了したらコマンドに出力
end if
on error goto 0
Wscript.Echo strMessage
sendusingの設定値について
| 設定値 | 設定値の説明 |
| 1 | ローカルSMTPサービスにメールを配置する |
| 2 | SMTPポートに接続して送信する |
| 3 | OLE DBを利用してローカルのExchangeに接続する |
メール通知実行
メールを送信するにはコマンドプロンプトでcscriptコマンドを使用します。
> cscript mail.vbs
以上で指定したファイルをメールで送信し、通知することができます。


PP様
本ブログを読んで下さり誠にありがとうございます。ご指摘頂きまして誠にありがとうございます。
修正させて頂きました。
今後とも、本ブログをよろしくお願い致します。