利用sendmail命令发送html格式邮件
2012-04-24 11:03
363 查看
在做一些Linux的shell脚本监控时,经常会遇到要利用sendmail命令发送各种监控数据的邮件,通常我们可以利用shell脚本把结果成html代码,这样发送到邮件里就更直观的去看监控数据了。
这里写一个简单的案例:
把监控数据写入一个文件中,例如mail.txt,在文件的的最前部分加入以下内容
上面代码的意思就不解释了(From和To字段可以直接写邮件地址,可以不用加发件人名字Admin,当然尖括号也就不需要了),我这里是做了一个服务器是否在线的监控(代码就省略了,重点讲sendmail),然后再把监控数据写入到上面代码的下面就可以了,然后再做一个收尾工作:
最后就可以发送了:
可以去尝试一下,当然要记得启动sendmail服务呀,否则邮件是发送不出去的。
2013年3月8日补充:
在Shell终端发送含有中文收件人名称、中文发件人名称以及中文标题的邮件
可以直接在From,To,Subject中写中文,这在腾讯、163邮箱系统是可以正常识别出来的,新浪识别出来为乱码,当然邮件内容不会乱码。
来看看怎么解决,看一个脚本内容:
执行这个脚本,看看效果:
可以从上图看出来,主题、发件人、收件人、内容都正常显示了中文,新浪的测试就不给图了。
解释下代码的含义:
可以看到在From、To、Subject三个字段的中文都进行了特殊处理,都是以=?UTF-8?B?开头,以?=结束,而在这两者之间的内容就是中文,进行了转码,可以到这个网站进行转换和查询:
http://www.base64encode.org/
这样进行了转码之后,就在新浪、QQ、以及网易163邮箱能正常显示中文了。注意只是特殊处理了From,To,Subject三个字段的内容,而主题内容的内容是不会乱码,并且上面的代码里也指定了邮件内容的编码为UTF-8,建议这样指定。
这里写一个简单的案例:
把监控数据写入一个文件中,例如mail.txt,在文件的的最前部分加入以下内容
From: Admin <admin@test.com> To: Luxiaok <luxiaok@abc.com> Content-type: text/html;charset=UTF-8 Subject: Alter Mail <table bgcolor=red><tr><td>Warning:VPS seems shut down</td></tr> <tr><td>IP address:
上面代码的意思就不解释了(From和To字段可以直接写邮件地址,可以不用加发件人名字Admin,当然尖括号也就不需要了),我这里是做了一个服务器是否在线的监控(代码就省略了,重点讲sendmail),然后再把监控数据写入到上面代码的下面就可以了,然后再做一个收尾工作:
echo "</td></tr></table>" >> mail.txt
最后就可以发送了:
cat mail.txt | sendmail -t
可以去尝试一下,当然要记得启动sendmail服务呀,否则邮件是发送不出去的。
2013年3月8日补充:
在Shell终端发送含有中文收件人名称、中文发件人名称以及中文标题的邮件
可以直接在From,To,Subject中写中文,这在腾讯、163邮箱系统是可以正常识别出来的,新浪识别出来为乱码,当然邮件内容不会乱码。
来看看怎么解决,看一个脚本内容:
sendmail -t << EOF From: =?UTF-8?B?566h55CG5ZGY?= <webmaster@luxiaok.com> To: =?UTF-8?B?6ZmG5bCPSw==?= <me@luxiaok.com> Content-type: text/html;charset=utf-8 Subject: =?UTF-8?B?5rWL6K+V6YKu5Lu2?= <table bgcolor=red><tr><td>这是一封测试邮件</td></tr> <tr><td>测试,Test! </td></tr></table> EOF
执行这个脚本,看看效果:
可以从上图看出来,主题、发件人、收件人、内容都正常显示了中文,新浪的测试就不给图了。
解释下代码的含义:
可以看到在From、To、Subject三个字段的中文都进行了特殊处理,都是以=?UTF-8?B?开头,以?=结束,而在这两者之间的内容就是中文,进行了转码,可以到这个网站进行转换和查询:
http://www.base64encode.org/
这样进行了转码之后,就在新浪、QQ、以及网易163邮箱能正常显示中文了。注意只是特殊处理了From,To,Subject三个字段的内容,而主题内容的内容是不会乱码,并且上面的代码里也指定了邮件内容的编码为UTF-8,建议这样指定。
相关文章推荐
- shell sendmail发送带附件的html格式邮件
- 在Linux命令行下发送html格式的邮件
- 使用linux的mail命令发送html格式的邮件
- Linux环境下sendmail发送html格式正文及csv格式附件邮件
- 在Linux命令行下发送html格式的邮件
- C#利用System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)
- python 利用smtp发送邮件,html格式
- c#利用system.net发送html格式邮件
- 使用linux的mail命令发送html格式的邮件
- python3使用SMTP发送HTML格式邮件
- [求助]如何发送HTML格式的Gmail邮件?
- 利用tmail.exe 命令参数来发送邮件
- c++ 利用 chilkat 库发送 html邮件
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- JavaMail使用5 -- 发送邮件2 -- 发送HTML格式邮件
- 使用Python发送HTML格式的邮件
- 如何利用sendmail发送外部邮件?
- python HTML格式发送邮件
- mutt发送HTML格式的邮件(简单的数据备份通知例子)
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件