古いシステムから送信されるメールを、メールソフトのThunderbirdで受信して読む機会がありました。
1年ほど前にも読む機会があり、ちゃんと読めました。
最近受信したメール、1年ほど前に受信したメールのどちらも、文字化けして読めません。
GmailとBecky!でも受信して読んでみましたが、文字化けしないでちゃんと読めました。
メールヘッダが正しくない
何が原因なのかと調べると、メールヘッダのContent-Typeが
text/plain
となっているために、文字化けしているようです。
以前から変わっていないのも確認しました。
なぜ1年ほど前はThunderbirdで文字化けしなかったのかと検索しました。
検索した結果、どうやら受信トレイで右クリック→メニューが表示されるので「プロパティ(P)」を選択でプロパティが表示されますが、「フォールバックテキストエンコーディング」が「Unicode(UTF-8)」になっているためのようです。
「フォールバックテキストエンコーディング」を「日本語(ISO-2022-JP)」にすると、文字化けしないで表示されるようになりました。
1年ほど前は、「フォールバックテキストエンコーディング」が「日本語(ISO-2022-JP)」になっていたので文字化けしないでメールを読めていたのが、いつの間にかアップデートのタイミングで「Unicode(UTF-8)」に変わってしまったようです。
プログラムを修正
とりあえず原因と対処方法はわかりましたが、メールソフトとしてThunderbirdを利用する人すべてに設定を変更してもらうのは難しいです。
システムの修正が必要です。
古いシステムでしたがソースコードがあり、Javaで書かれたプログラムです。
不慣れなEclipseの設定やコンパイル環境の構築を行って、数回試した結果、
メールヘッダのContent-Typeを
text/plain
から
text/plain; charset="ISO-2022-JP"
に置き換えられました。
「フォールバックテキストエンコーディング」が「Unicode(UTF-8)」のままでも、文字化けしないでメールを読めるようになりました。
メールソフトとしてThunderbirdを使っていて、以前のメールが文字化けする方は、「フォールバックテキストエンコーディング」が「Unicode(UTF-8)」になっていないか確認してみると、文字化けが解消するかもしれません。