近頃版/another blog@hatena/Wiki/BBS
< 2006FIFA W杯 日本代表総感 | {BKH}memo : HTTP by WinInetのパケット送信タイミング >
社内で製作されているIssueTrackerがASP.NETを使って作られていて、こいつが見事に.NET Framework 2.0 の System.Net.Mail 名前空間の SmtpClient/MailMessage を使用して、日本語(ISO-2022-JP) を Content-Transfer-Encoding: 7bit で送信する完全な方法は存在しないというのを踏んでいる。
そしてこいつがとても正しい挙動をするmewと相性が悪い。どっちが悪いかと言えば勿論.NETだがそいつをmewで吸収するのはやはり不愉快である。
_こんなときにはバッドノウハウの出番だ! ということでprocmail様の登場である。
まずはun_sevenbit.plというスクリプトを書く。
#!/usr/bin/perl while(<>){ last if /^$/; s/^(content-transfer-encoding:) sevenbit/$1 7bit/i; print; } print; while(<>){ print; }
続いて.procmailrcに以下の記述を追加する。
:0fw | un_sevenbit.pl
以上で解決。
_別解として.procmailrcに以下のように書く方法もありそうだがバッドノウハウ度があまりに上昇するので却下。
:0fw | perl -npe '$body = 1 if(/^$/);s/^(content-transfer-encoding:) sevenbit/$1 7bit/i if $body != 1;'
_ちなみにBKHはBadKnowHowの略。これをわざわざBKHと略してみるのもバッドノウハウ――というのは半分冗談だけど半分は本気なのでそのように。