4.5 最後の障害 -- mailx がなかなか言うことを聞かない

ここまでで、動くこともあるようになった。 メールによっては携帯に転送されてちゃんと読める。

しかし mime-attachment という添付ファイルになることもある (というか、そうなることの方が多い)。 添付ファイル自身は Mac に送り返してみると、 ちゃんと読める内容と確認できて、ゴールは間近の感触。

ところがここから何日もかかってしまった。

mailx -s 件名 アドレス < ファイル
という使い方でうまく行かないみたいな Q&A があちこちに残っていて、 文字コードの問題だと思って色々やってみたのだけれど、、、

maildelivery.cgi で mailx を起動せずに、 標準出力に出して、パイプで mailx につなぐとうまく動作するのに、 maildelivery.cgi の中で mailx を起動すると、 なぜか添付ファイルになってしまう。うーん、うーん。

原因は locale だった。UTF8 のデータを mailx に流し込むときに、 環境変数 LANG が、 対話モードでは ja_JP.UTF-8 になっているのに、 maildelivery.cgi から起動するとそうなっていないことだった。 mailx は気を効かせて、環境変数を見て動作を変えているわけなんだ。

分かってしまえば、mailx を起動するときに env を使えば良い。
open(MAIL,"| /usr/bin/env LANG=ja_JP.UTF-8 /opt/local/bin/mailx -s hello 携帯のアドレス");
これで添付ファイルに化けることはなくなったようだ。

件名が化けるという問題があったが、それも Jcode で対策して解決。

ようやく一件落着かな。

桂田 祐史
2018-11-04