mailx コマンドで日本語を本文に入れると添付ファイルになってしまう?
「mailx 添付ファイルになる」でぐぐっても
あまりよくわからなかったのでメモ。
■前提
・body.txt に UTF-8 で日本語の文章が書いてある
・cat body.txt | mailx -s "title" "自分のメールアドレス" でメールを送る
・みたいなコマンドをシェルスクリプトに書いて cron で動かす
・すると、cron で動かし、かつ、本文に日本語が含まれる時だけ、
本文が空っぽで、本文になるはずの内容が添付ファイルで送られてくる。
・本文に日本語がなければこの現象は起きない。
・手動での実行でも起きない。
■対策
スクリプトの先頭に export LC_CTYPE=ja_JP.UTF-8 を記載する。
もしくは
0 15 * * * LANG=ja_JP.UTF-8 動かすスクリプト
みたいに cron の設定の中に文字コードの設定を書いておく。
■原因
mailx コマンドでは LC_CTYPE に設定されている文字コードが使われるらしい。
手動と cron で locale コマンドを実行すると結果が異なり、
手動では LC_CTYPE="ja_JP.UTF-8" などとなっていても
cron での実行だと LC_CTYPE="POSIX" のようになってしまう。
■参考
【嵌りました】CRONで動かない! cron jobに環境変数LANGは引継がれず: Pythonと自分 ~ a python life
+++ 上野メモ帳 +++ cronだとLANGとかLC_CTYPEが反映されない
あまりよくわからなかったのでメモ。
■前提
・body.txt に UTF-8 で日本語の文章が書いてある
・cat body.txt | mailx -s "title" "自分のメールアドレス" でメールを送る
・みたいなコマンドをシェルスクリプトに書いて cron で動かす
・すると、cron で動かし、かつ、本文に日本語が含まれる時だけ、
本文が空っぽで、本文になるはずの内容が添付ファイルで送られてくる。
・本文に日本語がなければこの現象は起きない。
・手動での実行でも起きない。
■対策
スクリプトの先頭に export LC_CTYPE=ja_JP.UTF-8 を記載する。
もしくは
0 15 * * * LANG=ja_JP.UTF-8 動かすスクリプト
みたいに cron の設定の中に文字コードの設定を書いておく。
■原因
mailx コマンドでは LC_CTYPE に設定されている文字コードが使われるらしい。
手動と cron で locale コマンドを実行すると結果が異なり、
手動では LC_CTYPE="ja_JP.UTF-8" などとなっていても
cron での実行だと LC_CTYPE="POSIX" のようになってしまう。
■参考
【嵌りました】CRONで動かない! cron jobに環境変数LANGは引継がれず: Pythonと自分 ~ a python life
+++ 上野メモ帳 +++ cronだとLANGとかLC_CTYPEが反映されない
by tokage-shippo
| 2013-04-30 16:01
| その他
