sendmailでメール本文やタイトルが文字化けする時の対応方法
概要
sendmailでメールを送信した時に
メールを受信するメーラーによって
文字化けする場合があるので対応方法を記載
環境
対応方法
文字化けしないようにテキスト(Base64)でデータを送信する
メールヘッダーの指定
文字コード(UTF-8)と送信エンコード(Base64)を指定
項目 | 値 |
---|---|
Content-Type | text/plain; charset=UTF-8 |
Content-Transfer-Encoding | Base64 |
メール件名のエンコード
Base64エンコードし文字コードの指定をくっつける
64文字ごとに分割されるので、分割されるごとにUTF-8のマークを設定
SUBJECT_BASE64=`echo -n "メールの件名" | openssl enc -e -base64` MAIL_SUBJECT="" for s in $SUBJECT_BASE64 do MAIL_SUBJECT=${MAIL_SUBJECT}" =?UTF-8?B?${s}?=" done
メール本文
MAIL_BODY=`echo -e "メール本文。\n2行目。" | openssl enc -e -base64`
メール送信コマンド
MAIL_ADDRESS=メールアドレス echo -e "To:${MAIL_ADDRESS}\nSubject:${MAIL_SUBJECT}\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: Base64\n`echo -n ${MAIL_BODY}`\n" | sendmail -t "${MAIL_ADDRESS}"