Windows サーバからメール作成して送りたいけど、メーラーは入れられないし、そもそもタスクスケジューラ等でスクリプトから自動で送信したい!なんてこと、たまにありますよね。
このメール送信スクリプトを使えば、そんな悩みを解決してくれます。
事前準備として、C:\mail というフォルダを作成し、その中に、"メール本文.txt"というファイル名を用意します。また、添付ファイルが必要な場合は同じフォルダ配下に必要なファイルを置きます。
この状態でスクリプトを起動すると、まず送信元メールアドレス、宛先メールアドレス、メールタイトルを聞いてきますので記入します。
さらに添付ファイルのファイル名を聞いてくるので、これもファイル名を記入します。
そうするとメッセージ内容が表示されるのでそれを確認し、問題なければ送信します。
また、このファイルは(MXレコードを引くのではなく、)SMTPサーバのIPを直接指定しているので、MXの優先度が低いメールサーバへの送信試験にも使えます。
-----------------
"SendMail.vbs"
-----------------
Option Explicit
Const useLocalSMTPService = 1
Const useRemoteSMTPService = 2
Const useLocalExchangeService = 3
Dim objMessage
Dim mySMTPServer
Dim mySMTPPort
Dim MailFrom
Dim MailTo
Dim Title
Dim TxtBodyFile
Dim TxtBody
Dim myAttachment
Dim objFileSys
Dim objTextStream
Dim strOpenFile
Dim strText
mySMTPServer = "10.1.1.1"
mySMTPPort = 25
MailFrom = InputBox("送信元メールアドレスを入力して下さい.")
MailTo = InputBox("宛先メールアドレスを入力して下さい.")
Title = InputBox("タイトルを入力して下さい.")
myAttachment = InputBox("C:\mail配下の添付ファイル名を入力して下さい.")
myAttachment = "C:\mail\" & myAttachment
set objFileSys = CreateObject("Scripting.FileSystemObject")
strOpenFile = objFileSys.BuildPath("C:\mail\","メール本文.txt")
Set objTextStream = objFileSys.OpenTextFile(strOpenFile, 1)
Do Until objTextStream.AtEndOfStream = True
strText = objTextStream.ReadLine
TxtBody = TxtBody & vbCrLf & strText
Loop
objTextStream.Close
MsgBox "メール本文は下記の通りです。" & vbCrLf & vbCrLf & TxtBody
Set objMessage = CreateObject("CDO.Message")
objMessage.From = MailFrom
objMessage.To = MailTo
objMessage.Subject = Title
objMessage.TextBody = TxtBody
objMessage.AddAttachment(myAttachment)
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = useRemoteSMTPService
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mySMTPServer
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = mySMTPPort
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "送信完了"
Set objMessage = Nothing
Set mySMTPServer = Nothing
Set mySMTPPort = Nothing
Set MailTo = Nothing
Set Title = Nothing
Set TxtBodyFile = Nothing
Set TxtBody = Nothing
Set myAttachment = Nothing
Set objFileSys = Nothing
Set objTextStream = Nothing
Set strOpenFile = Nothing
Set strText = Nothingもしバッチサイズファイルで実行したいなら、上記.vbsファイルを作った上で、さらに以下の.batファイルも作ります。
-----------------
"SendMail.bat"
-----------------
@echo off cscript SendMail.vbs
同じフォルダにしたくない場合は、vbsファイルのフルパスを指定する。


コメント