sendmailにデフォルト文字コードという概念はありません。
UTF-8の日本語テキストを渡したいのであれば、BASE64エンコードしてsendmailに渡す必要があります。
Perlでしたら以下の記事が参考になるでしょう。
http://ugawalab.miyakyo-u.ac.jp/m6/fukuchi/blog/2008/10/mimebase64sendmailutf8.html
▽2
●
JULY ●289ポイント ベストアンサー |
linuxのシステムの自動返信メールなのですが、
であれば、その自動返信のプログラムで適切な文字コードで出力する、というのが基本です。
oil999 さんの回答の通り、sendmail 自体にデフォルトの文字コード、という概念はありません。渡された内容をそのまま送り出すだけです。
で、Base64 でのエンコードについて書かれていますが、これは、メールのヘッダ部に関しては ASCII コードしか使えないため、ASCII 以外の文字が含まれる場合に、Base64 でエンコードするのが一般的です(Quoted-pritable というエンコード方法もありますが、受信側が対応していない事があるので、Base64 の方が堅いです)。
しかし、本文部分に関しては、ヘッダ部に文字コードを宣言すると、任意の文字コードを記述する事ができます。
Perlによるメール送信スクリプト: m6 BLOG
oil999 さんが紹介されているページの続きで、実際の Perl スクリプトが書かれていますが、この中にある、
print SENDMAIL "Content-Type: text/plain; charset=iso-2022-jp\n";
この部分ですが、ここでは ISO-2022-JP、いわゆる 7bit JIS を指定しています。この行の前をさかのぼると、
# 本文を JIS 変換 $encoded_body = Jcode::convert($body, 'jis');
という記述が見つかります。送るメールの本文の内容を Jcode で JIS に変換した上で、メールのヘッダ部で、その文字コードを宣言しています。
つまり、「Content-Type: text/plain; charset=utf8」というヘッダにして、本文を UTF-8 で出力すれば UTF-8 のメールになり、受信した側が今時のメールソフトであれば、文字化けなどせず、正しく表示できる事が期待できます。
メールの文字コードはメールクライアントの設定に依存します。だからお使いのメーラーでutf-8に設定するだけです。