Subversion: コミットメール(1)
前略.
libopenssl-rubyがなかったので入れた.けどまだ動かない.なんででしょうかね・・・.
post-commitフックが失敗しました (終了コード: 1)。出力: /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:787:in `check_response': 504 5.7.4 Unrecognized Authentication Type 33sm88141887wad.18 (Net::SMTPSyntaxError) from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:695:in `auth_cram_md5' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:793:in `critical' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:694:in `auth_cram_md5' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:673:in `__send__' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:673:in `authenticate' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:488:in `do_start' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:440:in `start' from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:378:in `start' from /var/svnrepos/svn/bubble/hooks/commit-email.rb:53
$ cat commit-email.rb #!/usr/bin/ruby -Ke require 'rubygems' require 'net/smtp' require 'kconv' require 'tlsmail' REPOS=ARGV[0] REV=ARGV[1].to_i svnauthor=%x{svnlook author #{REPOS} -r #{REV} }.chomp svndate=%x{svnlook date #{REPOS} -r #{REV} }.chomp svnchanged=%x{svnlook changed #{REPOS} -r #{REV} }.chomp svnlog=%x{svnlook log #{REPOS} -r #{REV} }.chomp svndiff=%x{svnlook diff #{REPOS} -r #{REV} }.chomp toaddr =['ふが'] fromaddr=['ほげ'] svnlog=svnlog.kconv(Kconv::UTF8, Kconv::ASCII) body = <<END_OF_BODY Subversion committed to #{REPOS} #{REV} Updated by #{svnauthor} Modified #{svndate} Log: -------------------------------------------------------- #{svnlog} Changed: [U:UPDATE A:APPEND D:DELETE] -------------------------------------------------------- #{svnchanged} Diff: -------------------------------------------------------- #{svndiff} END_OF_BODY message = <<END_OF_MESSAGE From: Subversion Admin <#{fromaddr}> To: Subversion Committers: #{toaddr}, ; Subject: [SVN-#{REV}] Commit by #{svnauthor} MIME-Version: 1.0 Content-Type: text/plain; charset = ISO-2022-JP X-Mailer: /var/lib/svn/hooks/post-commit #{body.tojis} END_OF_MESSAGE Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE) Net::SMTP.start("smtp.gmail.com", 587, "localhost.localdomain", "メールアドレス", "パスワード") { |smtp| smtp.sendmail(message, fromaddr, *toaddr) }
できました
Net::SMTP.start("smtp.gmail.com", 587, "localhost.localdomain", "メールアドレス", "パスワード", "plain") { |smtp|
最後の", plain"が抜けていました.
また後でちゃんとまとめたいと思います.