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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは、サイオステクノロジーの小川です。今回は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サービスにメールを配置する
2SMTPポートに接続して送信する
3OLE DBを利用してローカルのExchangeに接続する

メール通知実行

メールを送信するにはコマンドプロンプトでcscriptコマンドを使用します。

> cscript mail.vbs

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

アバター画像
About 小川雄大 27 Articles
IDaaSプロジェクトを担当。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

1 Comment

  1. PP様

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

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

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる