LaterMail 再々修正
サササッと直すと見落としがあるものですね。結構慎重に修正したつもりだったんですが。
Undelivered Mail Returned to Sender
Diagnostic-Code: smtp; 501 Syntax error in parameters or arguments というメッセージがついて、メールが送れないというエラーメールが返ってきました。このメッセージはこういうことのようです。
RETおよびENVIDパラメータはいかなる単一なMAILコマンドにおいてもそれぞれ複数回出現してはならない。もしMAILコマンドにおいてこれらのパラメータのうちのそれぞれどちらかが複数回出現するならば、ESMTPサーバーは"501 syntax error in parameters or arguments"で反応するべきである。
http://weio.at.infoseek.co.jp/rfc1891ej.txt
つまり、From: や To: が複数回含まれていると。添付のヘッダを見ると確かに Message-Id: を挟んで From: と To: が2回書かれています。
latermail.rb
ヘッダの出現順序に依存しないように修正したのに、Message-Id: の前に From:、To: が出てきていないとそれぞれを挿入するコードが残っていたため、2回書くことになってしまっていました。(出現順序云々を別にして元々バグですが)
from_write = to_write =tof = ccf = false when /^From:/ifrom_write = trueputbuf(from_message) when /^To:/ito_write,tof, ccf =true,true, false putbuf("To: #{from}") when /^Message-Id:/iputbuf(from_message) if !from_write && fromputbuf("To: #{from}") if !to_writeputbuf(line) dt = add(Time.now.to_s, to) unless dt @io = open("#{@dir}#{dt.strftime('%Y%m%d%H%M%S')}.#{user}", "w") @buf.each { |bf| putbuf(bf) }