Shell 调用sendmai发邮件 subject中文乱码

来源:互联网 发布:如何把整轨分轨软件 编辑:程序博客网 时间:2024/05/22 06:21

最近写一个Ksh 的脚本,调用sendmail 发送邮件。 邮件内容有超链接地址,所以使用html去处理,并且设置content-type=UTF-8

大致内容如下 [内容为本人随意写的,不涉及任何组织机构的商业秘密,请技术人员不必过分在意]

cat <<EOF >${tmp_3HK_content_Chi}

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
最新香港服務及產品資訊盡在123.com.hk
</title>
</head>
<body tyle="width:80%">
<p> 賬戶號碼:${PMCI_MOB_NBR}</p>
<p>不時更新以提供最新最快之香港服務及產品資訊,不時更新以提供最新最快之香港服務及產品資訊不時更新以提供最新最快之香港服務及產品資訊不時更新以提供最新最快之香港服務及產品資訊。
</p>
<p>若閣下申請停止收取此类推廣電郵,可致電(852) 1234 5678 聯絡客戶主任辦理。亦可<a href="${RT_EM_Hyperlink} ">按此</a>:登入香港網頁 > 個人資料管理 > 更改推廣媒介。
</p>
</body>
</html>
EOF

EMAIL_ADDRESS="邮箱地址"

Subject="最新香港服務及產品資訊"
        (
        echo "Subject: $Subject"
        echo "Subject: $title"
        echo "MIME-Version: 1.0"
        echo "Content-Type: text/html; charset=UTF-8 "
        echo "Content-Disposition: inline"
        cat $tmp_3HK_content_Chi
        ) | sendmail $EMAIL_ADDRESS

执行后发现收到的邮件内容正常显示,但是邮件标题即Subject是乱码。网上搜了各种方法,均没有解决问题。

试了

 

tmp_chi_subject=${ROOT}/bin/tmp_subject1.txt

 

 read title <${tmp_chi_subject}
        (
        echo "Subject: =?big5?x8fIzsG6t9vLv87Cxa/P18DxILXn19PU09arP2wq8=?$title"
        echo "Subject: $title"
        echo "MIME-Version: 1.0"
        echo "Content-Type: text/html; charset=UTF-8 "
        echo "Content-Disposition: inline"
        cat $tmp_3HK_content_Chi
        ) | sendmail $EMAIL_ADDRESS

可以解决Subject为乱码的问题。只是在Foxmail上看到的邮件标题是正常只有中文标题的,网页版的会变成【=?big5?x8fIzsG6t9vLv87Cxa/P18DxILXn19PU09arP2wq8=?最新香港服務及產品資訊】。

后来重新把shell脚本用note-pad 先设置为编码格式为Big5.

再把html格式的content的所有编码从UTF-8变成big5【不是BIG-5】,使得整个脚本的编码与输出的编码均保持一致,不需要把subject写到文件中,直接

       Subject="最新香港服務及產品資訊"
        (
        echo "Subject: $SUBJECT"
        echo "MIME-Version: 1.0"
        echo "Content-Type: text/html; charset=big5 "
        echo "Content-Disposition: inline"
        cat $tmp_3HK_content_Chi
        ) | sendmail $EMAIL_ADDRESS

就可以了。并且网页上看到的邮件与foxmail里面都是正常显示邮件标题和内容的哦


        

原创粉丝点击