引き継ぎ完了

お仕事

昨日、今日と不具合調査もしつつ引き継ぎはほぼ終わった。これで本当に開発に戻れるのかな。一区切りついたらどっと疲れてきた、、、。

開発

先日の続き。コードリーディングを兼ねつつ、身近なバグの修正を行う。

kotti_contactform/pyramid_mailer は、フォームで入力されたメッセージの文字コードを扱ってなくて、Message オブジェクトを作成するものの、実際に charset や Content-Transfer-Encoding はセットせずに、repoze.sendmail がメールの送信前に調べて変換していることが分かった。

best_charset() は ascii -> latin-1 -> utf-8 の順にエンコードしてエラーが出ない文字コードを選択するロジックだから、ほとんど動くのかもしれないけど保証はできない。ライブラリならこういうロジックにならざるを得ないのかな。

リクエストオブジェクトから文字コードの情報は保持してるから、それを使って明示的にヘッダー情報を指定して連携するようにすれば良さそう。どこをどう直すかはもう少しコードを読んで理解しないといけない。

あとバイナリーファイルの添付ファイルも base64エンコードしたらメールは送れるようになったので、(repoze.sendmail でメール送るときの) pyramid_mailer のエンコーディングやヘッダー情報の設定が未実装に見える。

ふと、POST するファイルの、ファイル名の文字コードってどうやって調べられるんだろう?と考えたら分からなくなった。分からないことばっかりだなぁ。

追記

POST するテキストやファイル名の文字コードは、ページレンダリング時の文字コードらしい。また明日調べるー。