[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 メーリングリストの案内