ファイルをメールで自動送信する 1 「VBSを記述する」
日常の業務をしていると、毎日何回も繰り返す作業ってありますよね。例えば「伝票を作ってメールで添付して送信する」という作業は日常かなり多いと思います。これが1日に複数回、同じ宛先に同じ件名とメッセージを添えて送信となると、何とか作業を楽にしたいものです。そこで「添付ファイルを自動でメール送信する」というのをやってみました。イメージとしては、デスクトップ上のフォルダ「送信フォルダ」に送りたいファイルを入れるフォルダ監視ソフトでそのフォルダを監視し、ファイルが入れられたら自動送信するバッチが起動する送信後、そのファイルを自動で削除するこのような一連の流れにしたいと思います。まず、主体となるプログラムをVBSで以下のように記述してみました。(実はVBといってもExcelとかのVBAを少しかじったぐらいで、これはネットであれこれ調べて見よう見まねで作成したものです)≪2013/4/3 追記あり≫Dim Fs, strPath, Fl, F, NewFile, NewFileFP, OutFSet Fs = CreateObject("Scripting.FileSystemObject")strPath = "C:\Users\owner\Desktop\送信フォルダ\"NewFile = ""Set Fl = Fs.GetFolder(strPath)For Each F In Fl.FilesIf F.Name > NewFile ThenNewFile = F.NameEnd IfNextNewFileFP = Fl & "\" & NewFileDim WshShell, BtnCodeSet WshShell = WScript.CreateObject("WScript.Shell")Set objShell = CreateObject("Wscript.Shell")Set oMsg = CreateObject("CDO.Message")oMsg.From = "ファイル送信元 <aaa@xxx.co.jp>" '送信元oMsg.To = "bbb@xxx.co.jp; ccc@xxx.co.jp" '送信先oMsg.Bcc = "aaa@xxx.co.jp"oMsg.Subject = "ファイルの送信" '件名oMsg.TextBody = "ファイルをお送りします。" 'メール本文oMsg.AddAttachment NewFileFP '添付oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxx.xxx.xxx.xxx"oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "username"oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"oMsg.Configuration.Fields.UpdateoMsg.SendSet OutF = Fs.OpenTextFile("C:\FileSend\Fsend.log",8)OutF.WriteLine "Date[" & date & "] Time[" & time & "] File[" & NewFile & "]"OutF.CloseFs.DeleteFile NewFileFPobjShell.Popup "メール送信しました。", 0, "送信完了", 0Set Fs = NothingSet Fl = NothingSet OutF = Nothing3行目はデスクトップ上の「送信フォルダ」のパスを記述します17から19行目に送信元と送信先のメールアドレスを入れます19行目のBccは確認のため自身に送るものです26行目の"xxx.xxx.xxx.xxx" はSMTPサーバーです28行目はSMTPのポート番号 25または587です認証を付け加えました:30行目 1(Basic認証) または 2(NTLM認証)32行目 ユーザー名34行目 パスワード32行目はあとで用意するログファイルのパスですこれをメモ帳などで編集し、「FileSend.vbs」と名前を付けて保存します。次に「C:\FileSend」を用意します。その中に新規テキストファイル「Fsend.log」を作成し、先ほどの「FileSend.vbs」を入れます。では、実際バッチを実行してファイルを送ってみます。デスクトップに「送信フォルダ」を用意し、そこにテスト用のファイルを入れてバッチを実行します。このようにメッセージが表示され、「送信フォルダ」の中のファイルは削除されています。無事メールも受信されました。ログファイル「Fsend.log」にも記録されています。もしうまく送信できない時は、メールアドレス、サーバアドレス、ポート番号を見直してください。関連記事◆ファイルをメールで自動送信する 2 「フォルダ監視ソフトを使う」◆新サーバ切り替えに伴い、メールを自動で送るVBScriptの書き換え◆出勤時のタイムカードの代わりにメール送信 参考リンク◆Windows標準機能とWSHを使ってメールを送信する 【送料無料】最速攻略VBScript(ブイビースクリプト)サンプル大全集 [ 結城圭介 ]