[debian-users 00696] Re: mail コマンドのcharset
KISE Hiroshi
kise @ fuyuneko.jp
2020年 12月 6日 (日) 21:17:01 JST
mailコマンド(bas-mailx)がContent-Typeヘッダを追加しているか、について。
mailコマンドは一時ファイル /tmp/R* を作成しているので、次のようにすれば
確認できそうです。
$ echo abcd | env LC_ALL=ja_JP.UTF-8 strace -s 255 -e trace=write mail -s hoge foobar @ example.com
write(3, "abcd\n", 5) = 5
write(4, "To: foobar @ example.com\nSubject: hoge\nMIME-Version: 1.0\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit\n\nabcd\n", 135) = 135
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=675303, si_uid=121, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++
$
さらに、私の環境で LC_ALL=en_US.UTF-8 で試したところ、
write(4, "To: foobar @ example.com\nSubject: hoge\nMIME-Version: 1.0\nContent-Type: text/plain; charset=\"ANSI_X3.4-1968\"\nContent-Transfer-Encoding: 8bit\n\nabcd\n", 144) = 144
となりました。これ、ロケールの設定によるようです。
$ locale -a
C
C.UTF-8
POSIX
ja_JP.utf8
$
/etc/locale.genを編集してen_US.UTF-8を有効にし、“locale-gen”を
実行したあとに再度上記のmailコマンドを実行したところ、
write(4, "To: foobar @ example.com\nSubject: hoge\nMIME-Version: 1.0\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit\n\nabcd\n", 135) = 135
になりました。
ソースコードをみてみました。Content-Typeを扱うのはパッチ部分のみ?
https://salsa.debian.org/debian/bsd-mailx/-/blob/master/debian/patches/33-Add-MIME-headers.patch
+ const char* const cs = nl_langinfo(CODESET);
+ ADDHEADER("MIME-Version", "1.0");
+ ADDHEADER("Content-Type", "text/plain; charset=\"%s\"",
+ cs && *cs ? cs : "ANSI_X3.4-1968");
+ ADDHEADER("Content-Transfer-Encoding", "8bit");
不明なロケールのときに ANSI_X3.4-1968 を付けるようです。
--
喜瀬“冬猫”浩
debian-users メーリングリストの案内