sendmail CGI、Perlスクリプトで本文がURLエンコードされた問題の解決

自分で作ったスクリプトではないが、

あるサーバで問題なく動いていたCGIsendmailPerlスクリプトが、

サーバを移転したら、本文がURLエンコードされて一見文字化けされた

ようになるようになった。この症状は、OutlookSylpheedでは

完璧にデコードするために発見が遅れた。

ちなみに、ツール単体でこの文字化けを完璧にデコードするものを

知らない。「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 が勝手に↓のように変換してしまうんですね。