2015年3月3日火曜日

[Linux] mailコマンドでメール送信すると本文にヘッダ情報が混入する

シェルから自動送信されるメールの本文に User-Agent とかの
ヘッダ情報が混入されてしまう現象を確認、解決したので覚書。

■環境
SUSE Linux Enterprise Server 11 (x86_64)

■変更前
send_mail() {
    from=$1
    to=$2
    inputEncoding="utf-8"
    outputEncoding="iso-2022-jp"
    subjectHead="=?${outputEncoding}?B?"
    subjectBody="`echo "$3" | iconv -f ${inputEncoding} -t ${outputEncoding} | base64 | tr -d '\n'`"
    subjectTail="?="
    subjectAll=${subjectHead}${subjectBody}${subjectTail}
    echo "$contents" | mail -s "$subjectAll" "$to" -- -f "$from"
    return $?
}

from="from@hoge.hoge"

to="to@hoge.hoge"
subject="件名"
contents="本文"
send_mail "$from" "$to" "$subject" "$contents"
if [ $? -eq 1 ]; then
    echo "send mail failure"
    exit 1
fi
echo "send mail success"

■変更後
send_mail() {
    from=$1
    to=$2
    inputEncoding="utf-8"
    outputEncoding="iso-2022-jp"
#    subjectHead="=?${outputEncoding}?B?"
#    subjectBody="`echo "$3" | iconv -f ${inputEncoding} -t ${outputEncoding} | base64 | tr -d '\n'`"
#    subjectTail="?="
#    subjectAll=${subjectHead}${subjectBody}${subjectTail}
    contents=`echo -e "$4"`  #| iconv -f ${inputEncoding} -t ${outputEncoding}`"
#    echo "$contents" | mail -s "$subjectAll" "$to" -- -f "$from"
    echo "$contents" | mail -s "$3" "$to" -- -f "$from"
    return $?
}

from="from@hoge.hoge"

to="to@hoge.hoge"
subject="件名"
contents="本文"
send_mail "$from" "$to" "$subject" "$contents"
if [ $? -eq 1 ]; then
    echo "send mail failure"
    exit 1
fi
echo "send mail success"


調べてもあまり有用な情報がなく大変でした。。
Linuxのディストリビューションによっても動作が異なりそう。

0 件のコメント:

コメントを投稿