Windows 上の Subversion でのコミットメール送信 ~ その3
この記事は最初の投稿日から18年経過しています。内容が古い可能性があります。
Subversion におけるフックを使ったコミットメールの送信ですが、
前回同様、メールの送信には CMail を使わせてもらっています。
と、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 の時代から搭載されていたらしいので、相当前から存在していたようで。