スクリプト

Windowsコマンドプロンプト(vbs/bat)で添付ファイル付メールを作成, 送信

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

コメント

タイトルとURLをコピーしました