您的位置:首页 > 运维架构 > Shell

Linux使用shell脚本调用sendmail发送带附件的邮件

2016-01-15 14:31 711 查看

带附件功能

环境:Linux(CentOS6.5)

sendmail发送带附件的邮件,需要用uuencode命令,这个命令在sharutils组件中。yum install sharutils安装。

用法:uuencode  附件文件   附件在邮件中显示的名字

shell脚本

#!/bin/sh
# shell send email

# mail_receiver.cc中每行都是一个接收者邮箱的地址;
#
# email_content所指的文件内容作为邮件的内容;
#
# attachment所指的文件作为邮件的附件;
#
# from:发件人地址
# to:收件人地址
# cc:抄送人地址
#
# uuencode  附件文件 附件文件别名(在邮箱中显示的文件名)
#
# Linux中程序生成的文件默认为utf-8编码,在windows中使用excel打开.csv文件时,默认编码是gb2312,所以直接写文件会导致汉字显示乱码。
# 解决方法:Linux程序写入附件文件前,将汉字转化成gb2312编码(使用),再写入即可。
#

cat /var/mail_receiver.cc | while read line
do
from_name="test系统服务"
from="1122334@163.com"
to=$line
cc_name="数据中心"
cc="AAA@test.com"
email_title="数据异常预警"
email_content="/var/detail_status.log"
email_subject="系统数据异常预警"
attachment="/var/detail.csv"
(echo -e "To: \"${email_title}\" <${to}>\nCc: \"${cc_name}\" <${cc}>\nFrom: \"${from_name}\" <${from}>\nSubject: ${email_subject}\n\n`cat ${email_content}`";uuencode ${attachment} detail_info.csv) | /usr/sbin/sendmail -t
done
也可以通过更改sendmail配置实现群发功能,需要统一重命名收件人地址。小编较懒,就简单的循环发送了。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell linux 邮件