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ファイルのフルパスを指定する。
コメント