引き継ぎ完了
お仕事
昨日、今日と不具合調査もしつつ引き継ぎはほぼ終わった。これで本当に開発に戻れるのかな。一区切りついたらどっと疲れてきた、、、。
開発
先日の続き。コードリーディングを兼ねつつ、身近なバグの修正を行う。
kotti_contactform/pyramid_mailer は、フォームで入力されたメッセージの文字コードを扱ってなくて、Message オブジェクトを作成するものの、実際に charset や Content-Transfer-Encoding はセットせずに、repoze.sendmail がメールの送信前に調べて変換していることが分かった。
best_charset() は ascii -> latin-1 -> utf-8 の順にエンコードしてエラーが出ない文字コードを選択するロジックだから、ほとんど動くのかもしれないけど保証はできない。ライブラリならこういうロジックにならざるを得ないのかな。
リクエストオブジェクトから文字コードの情報は保持してるから、それを使って明示的にヘッダー情報を指定して連携するようにすれば良さそう。どこをどう直すかはもう少しコードを読んで理解しないといけない。
あとバイナリーファイルの添付ファイルも base64 でエンコードしたらメールは送れるようになったので、(repoze.sendmail でメール送るときの) pyramid_mailer のエンコーディングやヘッダー情報の設定が未実装に見える。
ふと、POST するファイルの、ファイル名の文字コードってどうやって調べられるんだろう?と考えたら分からなくなった。分からないことばっかりだなぁ。