首页 > 系统 > Linux >

使用Formail发送html格式的中文主题邮件,解决乱码问题等

2017-03-03

使用Formail发送html格式的中文主题邮件,解决乱码问题等。查了很多资料都没有很好的解决发送中文主题的html格式的邮件,要解决的乱码问题,经过摸索,最后终于搞定,且可使用shell脚本,实现多收件人发送相对比较简单。

使用Formail发送html格式的中文主题邮件,解决乱码问题等。查了很多资料都没有很好的解决发送中文主题的html格式的邮件,要解决的乱码问题,经过摸索,最后终于搞定,且可使用shell脚本,实现多收件人发送相对比较简单。

使用formail发送html格式的邮件,邮件正文内容为html的网页内容,支持更多可变的形式,特别是从数据库取值、图表、链接等。

假设linux系统已经配置邮件系统,且有生成的html为test.html,路径为:/test/html/test.html,shell脚本如下:
建立一个sendmail.sh文件

cat /test/html/test.html | formail -I "Content-type:text/html;charset=gb2312" -I "Subject: This is  a test mail." -I "To:ssss@163.com" | /user/sbin/sendmail -t aaa@163.com 

上面是常见的发送形式,然而当需呀邮件主题是中文时,则情况会有所不同,系统默认字符是UTF-8,直接在subject后面输入中文,则邮件中很有可能出现乱码,这时候需要引入另一个设置项iconv。

cat /test/html/test.html | formail -I "Content-type:text/html;charset=gb2312" -I "Subject: ‘echo '这是一封中文主题邮件!' | iconv -f utf-8 -t gb2312’" -I "To:ssss@163.com" | /user/sbin/sendmail -t aaa@163.com

**注意上文中的引号使用。
有中文符号,是不是很奇怪,但是亲测是可以实现的。

另外,如果要实现给多用户发送邮件则有两种方案,一种是分别发送,另一种是群发。
先说群发,比较简单,在上文中formail 后面多加几个

-I  "To:123@163.com" -I "To:456@163.com"

就可以了。

分别发送则需要定义一个数组,将邮件中间以空格隔开,然后遍历数组,多次执行formail语句即可。

array=(123@163.com 456@163.com)
for mail in ${array[@]}
do
    cat /test/html/test.html | formail -I "Content-type:text/html;charset=gb2312" -I "Subject: This is  a test mail." -I "To:"$mail | /user/sbin/sendmail -t aaa@163.com
done

如此则实现了分别发送。

相关文章
最新文章
热点推荐