こんにちは、サイオステクノロジーの小川です。今回は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様
本ブログを読んで下さり誠にありがとうございます。ご指摘頂きまして誠にありがとうございます。
修正させて頂きました。
今後とも、本ブログをよろしくお願い致します。