自分で作ったスクリプトではないが、
あるサーバで問題なく動いていたCGI、sendmailのPerlスクリプトが、
サーバを移転したら、本文がURLエンコードされて一見文字化けされた
ようになるようになった。この症状は、OutlookやSylpheedでは
完璧にデコードするために発見が遅れた。
ちなみに、ツール単体でこの文字化けを完璧にデコードするものを
知らない。「WEBエンコード/デコード」というツールでかろうじて
一部文字化けが残る程度まで復号できている程度。
割と評判の良いメイラーなのにeM Clientなど、エンコードされた日本語
であることすら認識も出来ない。
具体的には、
$B$*@$OC$K$J$j$^$9!#>BDE>kKL9b9;$G$9!#(B
のような行が延々と続くわけである。
似たような事例が見つかり、
「Perl の CGI から sendmail でメール送信」(1) Linux Square - @IT (atmarkit.co.jp)
と症状が似ている。ので、処方箋も
「Perl の CGI から sendmail でメール送信」(2) Linux Square - @IT (atmarkit.co.jp)
と同じだろうと思って、やってみたところそれで解決した。
締めくくりにトピ主がまとめているセリフがすべてなのであろう。
print MAIL "Mime-Version: 1.0\n";
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "\n";
きちんと charset や Encoding を指定してやらないと、
sendmail が勝手に↓のように変換してしまうんですね。