サーバやクライアント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」を、コマンドプロンプトから実行します。
3. メールが送信されます。
これを使えば、たとえばGmailのSMTPサーバからメールを送信する、ということができます(Gmail側でアクセスの設定が必要です)。
SMAILやBASP21のようなコンポーネントを環境に導入すれば、もっとリッチなことができるのですが、そこまで必要が無ければ、このようなスクリプトだけでメールを送ることができます。
また、WSHで作成されているファイルなので、「mail.vbs」を引数渡しできるように変更して、メールの送信先や夜間バッチの結果などを引数で渡したり、メール本文をファイルで渡したりすることもできますね。
追記:関連コンテンツ
Windowsのコマンド実行でメール送信(PowerShell)
Windowsのコマンド実行でメール送信(BASP21)