またちょっといじった。
> TODO:
>・Date:ヘッダからBlog投稿時刻を設定する部分にまだbugがあるみたいなので直す。
> #年月日は正しいようだけど、時刻が00:00:00になってしまうようだ。
何が悪いのか良くわからなかったので、MT/MTServer.pmのソースを見てみた。
sub iso2ts {
my($blog, $iso) = @_;
die MT::XMLRPCServer::_fault("Invalid timestamp format")
unless $iso =~ /^(\d{4})(?:-?(\d{2})(?:-?(\d\d?)(?:T(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(Z|[+-]\d{2}:\d{2})?)?)?)?/;
my($y, $mo, $d, $h, $m, $s, $offset) =
($1, $2 || 1, $3 || 1, $4 || 0, $5 || 0, $6 || 0, $7);
どうもiso.8601のフォーマットが、HTTP::Date::time2iso()が出力するものと、
MovableTypeで想定しているものに違いがあるようだ。
HTTP::Date::time2iso()は"2006-01-09 00:12:34"と言う形式で出力するが、MT側は"2006-01-09T00:12:34"と言うフォーマットで来ることを期待している。
仕方なくちょっと出力フォーマットに手を加えた。
その他、タイムゾーンの問題もあったのでHTTP::Date::time2iso()からHTTP::Date::time2isoz()に変更。
参考になったのがXML-RPCの投稿日時。
mail2mt-newpost.pl.1.3
このバージョンで一応動作上の不都合は無いもののはず。
multipartのメッセージの時に、うまくいかないバグがあるのを発見した。
返信削除でも、今日は寝よう(==;