Windows 上の Subversion でのコミットメール送信 ~ その3

2018年2月25日

この記事は最初の投稿日から17年経過しています。内容が古い可能性があります。

Subversion におけるフックを使ったコミットメールの送信ですが、

前回同様、メールの送信には CMail を使わせてもらっています。

toshyonのメモ書き – Windows 上の Subversion でのコミットメール送信 ~ その2

と、CMail を使ってメールの送信を行っていましたが、今回はそこを vbs にしてしまいます。

実は、今までまったく知らなかったのですが、

@IT:Windows TIPS — Tips:Windows標準機能とWSHを使ってメールを送信する

という便利な方法があったので、これを使います。

前回の svnmail.vbs の以下の部分、

' CMail 用のコマンドライン作成
strCmdLine = "cmail -a """ + strAuthor + " <" + strMailAddress + ">"" -s ""[svn:" + strSubject + ":" + strRevision + "] " +strDirsChangedSubject + """ " + strMailTo
' メールの BODY を作成
strBody = strBody & "-- Author/Date -----------------------------------" & vbCrLf
strBody = strBody & "Author : " & strAuthor & vbCrLf
strBody = strBody & "Date   : " & strDate & vbCrLf
strBody = strBody & vbCrLf
strBody = strBody & "-- Log Message -----------------------------------" & vbCrLf
strBody = strBody & strLogMessage & vbCrLf
strBody = strBody & "-- Changed Directories ---------------------------" & vbCrLf
strBody = strBody & strDirsChanged & vbCrLf
strBody = strBody & "-- Changed Files ---------------------------------" & vbCrLf
strBody = strBody & strChanged & vbCrLf
' CMail を実行して標準入力に流し込む
Set objExec = objShell.Exec(strCmdLine)
objExec.StdIn.Write strBody

これを、次のようにします。

' メールの BODY を作成
strBody = strBody & "-- Author/Date -----------------------------------" & vbCrLf
strBody = strBody & "Author : " & strAuthor & vbCrLf
strBody = strBody & "Date   : " & strDate & vbCrLf
strBody = strBody & vbCrLf
strBody = strBody & "-- Log Message -----------------------------------" & vbCrLf
strBody = strBody & strLogMessage & vbCrLf
strBody = strBody & "-- Changed Directories ---------------------------" & vbCrLf
strBody = strBody & strDirsChanged & vbCrLf
strBody = strBody & "-- Changed Files ---------------------------------" & vbCrLf
strBody = strBody & strChanged & vbCrLf
Set oMsg = CreateObject("CDO.Message")
oMsg.From = strAuthor + "<" + strMailAddress + ">"
oMsg.To = strMailTo
oMsg.Subject = "[svn:" + strSubject + ":" + strRevision + "] " +strDirsChangedSubject
oMsg.TextBody = strBody
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "メールサーバのホスト名orIPアドレス"
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oMsg.Configuration.Fields.Update
oMsg.Send

Windowsに標準搭載の機能でこんなことができるなんてずっと知りませんでした。しかも Windows2000 の時代から搭載されていたらしいので、相当前から存在していたようで。

Subversion

Posted by toshyon