commitのタイミングでGMail送信

$REPOS/hooks/post-commitに下のようなコマンドラインを追加、コミットのタイミングでメール送信を確認できました。

ruby /home/qnzm/script/svn-commit-gmail.rb \
--account=xxxxx@gmail.com \
--password=ppppp \
--svnlook=/usr/bin/svnlook \
--from=xxxxx@gmail.com \
--to=yyyyy@zzzzz \
"$REPOS" "$REV" \

ただ、日本語ファイル名のファイルをコミットすると失敗する模様。
現時点で日本語名持つファイルはないんで、この点は放置…

青木日記 2007-03-29

こちらのソースをベースにして

zorioの日記 - 2007-03-18

を参考にして、アカウント、パスワードを受け取るよう書き換えました。(要rubygems, tlsmail)

書き換え内容

追加。

require 'rubygems'
require 'tlsmail'

追加。

  parser.on('--account=ACCOUNT', 'Account.'){|act|
    account = act
  }
  parser.on('--password=PASSWORD', 'Password.'){|pass|
    password = pass
  }

変更。

    mailer = SMTPMailer.new(host, port, account, password)

変更。

class SMTPMailer
  def initialize(host, port, account, password)
    @host = host
    @port = port
    @account = account
    @password = password
  end

  def send(from, to, message)
    if $DEBUG
      puts message
      return
    end
    Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
    Net::SMTP.start(@host, @port, "localhost", @account, @password, :plain) do |smtp|
      smtp.send_message message, from, to
    end
  end
end