ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. Windowsのコマンド実行でメール送信(WSH)

Windowsのコマンド実行でメール送信(WSH)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

サーバやクライアントPCで行っている何かしらの処理の結果をメールで送信したい、ということはよくあると思います。
たとえば、夜間バッチの結果を自分宛にメールで送ったり、処理を行うことで生成されるファイルを、そのファイル内容にあわせて相手先に送信したり…など。

今回は、Windowsのコマンド実行でメールを送信する方法です。

SMAILやBASP21のようなコンポーネントを環境に導入して、それを使用してメールを送信する方法もありますが、今回はWindows OS標準の機能だけで行う方法です。

やり方:

WSHでCDO.Messageを使ってメール送信スクリプトを作成し、それをバッチで起動します。

1. 以下のスクリプトファイルを作成します(例えば、「mail.vbs」)

SMTP認証、Cc、Bcc、Reply、添付ファイルなどのうち、不要なものは消すかコメントアウトしてください。

****************************************************************
メール送信元の設定
****************************************************************

strFrom = "<送信元メールアドレス>"
strReply = “<返信メールアドレス>”
strServer = "<smtpサーバのアドレス>"
nPort = <smtpサーバのポート番号>
strUser = "<smtpサーバのユーザ>"
strPass = "<smtpサーバのパスワード>"

****************************************************************
メール送信先の設定&メール本体の作成
****************************************************************

strTo = "<送信先メールアドレス>"
strCc = "<cc先メールアドレス>"
strBcc = "<bcc先メールアドレス>"
strSubject = "<メールタイトル>"
strTextbody = "<メール本文>"
strAddAttachment = “<添付ファイルのフルパス>”

****************************************************************
メール送信
****************************************************************

Set Cdo = WScript.CreateObject("CDO.Message")
Cdo.From = strFrom
Cdo.ReplyTo = strReply
Cdo.To = strTo
Cdo.Cc = strCc
Cdo.Bcc = "strBcc
Cdo.Subject = strSubject
Cdo.Textbody = strTextbody
Cdo.AddAttachment strAddAttachment
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strServer
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = nPort
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = true
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
Cdo.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass
Cdo.Configuration.Fields.Update
on error resume next
Cdo.Send
on error goto 0

****************************************************************
終了
****************************************************************

Wscript.Quit(Err.Number)it(Err.Number)

2. 1.で作成した「mail.vbs」を、コマンドプロンプトから実行します。

cscript mail.vbs

3. メールが送信されます。

これを使えば、たとえばGmailのSMTPサーバからメールを送信する、ということができます(Gmail側でアクセスの設定が必要です)。

SMAILやBASP21のようなコンポーネントを環境に導入すれば、もっとリッチなことができるのですが、そこまで必要が無ければ、このようなスクリプトだけでメールを送ることができます。
また、WSHで作成されているファイルなので、「mail.vbs」を引数渡しできるように変更して、メールの送信先や夜間バッチの結果などを引数で渡したり、メール本文をファイルで渡したりすることもできますね。


追記:関連コンテンツ

Windowsのコマンド実行でメール送信(PowerShell)

Windowsのコマンド実行でメール送信(BASP21)

メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ