VBScriptで指定したファイルをメール送信するTips

こんにちは、サイオステクノロジーの小川です。今回は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

以上で指定したファイルをメールで送信し、通知することができます。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

3人がこの投稿は役に立ったと言っています。

1 COMMENT

アバター画像 小川雄大

PP様

本ブログを読んで下さり誠にありがとうございます。ご指摘頂きまして誠にありがとうございます。
修正させて頂きました。

今後とも、本ブログをよろしくお願い致します。

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です