さり海馬

Thoughts walk away, blog stays.

半角カナが混じったテキストをメールで送る

会社のトラブル管理データベースから自部門に関係あるものを抽出し、未解決のものとそのデータへのリンクを貼り付けたメールを毎日自動送信する、というプログラムを python で組みました。

問題

ところがそいつが最近コケるようになりました。やっつけで作ったプログラムなので、エラー対応とかしてないのがいけないっちゃいけないんですが。

コケているのはここ:

b = body.encode('iso-2022-jp')

メールで送るためには iso-2022-jp に変換しなきゃならないんですが、ここで UnicodeEncodeError になってしまいます。文字列をよく調べてみたら、誰かが DB 上に半角カナの文字列を入れ込んでくれてました。入力規約違反だっつの。キルユー。

対策

いろいろググって見たら、まさにそのものずばりなページがありました。早速パクらせてもらいます。

b = body.encode('iso-2022-jp-ext')

目から鱗w。-ext ってのは「拡張JISエンコーディング」のことで、半角カナとか記号とかを含むセットです。上のページにも書いてありましたが、厳密には、メールにはこのエンコーディングは使うべきではないんですが。まぁ、たいていは大丈夫なのでこのまま華麗にスルーすることにします。それが pythonic ってことだよね、プロシュート兄貴