shell之发送html格式邮件
作者:互联网
文章目录
1.开启QQ邮箱服务器SMTP服务
本人多次尝试使用mail发送html格式的邮件,但是显示的还是文本,失败。最终使用了sendEmail客户端发送带表格的邮件,首先配置qq邮箱开启SMTP服务
流程如下图:设置-》账户
开启SMTP服务-》生辰授权码
2.安装sendEmail
#下载安装包
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
#创建目录
mkdir -p /usr/local/bin
#解压
tar zxf sendEmail-v1.56.tar.gz -C /usr/src/
#进入解压目录
cd /usr/src/sendEmail-v1.56/
#复制程序到指定目录
cp -a sendEmail /usr/local/bin/
#给执行权限
chmod +x /usr/local/bin/sendEmail
#安装组件
yum install perl-Net-SSLeay perl-IO-Socket-SSL -y
3.发送带附件的邮件
3.1sendEmail命令详解
# -f from@163.com # 发件人邮箱地址
# -t to@qq.com # 收件人邮箱地址
# -s smtp.163.com # 发件人邮箱的smtp服务器地址
# -u 'test' # 邮件标题
# -o message-content-type=html # 邮件内容格式为html
# -o message-charset=utf8 # 邮件内容编码为utf8
# -xu from@163.com # 发件人邮箱登录用户名
# -xp 'passwd' # 发件人邮箱登录密码
# -m 'test' # 邮件内容
3.2编写test.sh脚本如下
#!/bin/bash
#收件箱
EMAIL_RECIVER="571XXX512@qq.com"
#发送者邮箱
EMAIL_SENDER=5713XXXX12@qq.com
#邮箱用户名
EMAIL_USERNAME=571325512
#邮箱密码
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆码。
EMAIL_PASSWORD=laitXXXowbcei
#附件路径
FILE1_PATH="/root/wsktest/2.png"
#smtp服务器地址
EMAIL_SMTPHOST=smtp.qq.com
EMAIL_TITLE="测试"
EMAIL_CONTENT="你好!"
sendEmail -f ${EMAIL_SENDER} -t ${EMAIL_RECIVER} -s ${EMAIL_SMTPHOST} -u ${EMAIL_TITLE} -xu ${EMAIL_USERNAME} -xp ${EMAIL_PASSWORD} -m ${EMAIL_CONTENT} -a ${FILE1_PATH} -o message-charset=utf-8
3.3执行脚本 sh test.sh
[root@hadoop001 wsktest]# sh test.sh
Apr 13 16:17:08 hadoop001 sendEmail[13678]: Email was sent successfully!
4.发送带html表格的邮件
4.1表格数据
第一列为表名称,第二列为原mysql表数据总量,第三列为数仓HBase的数据总量,目的是将table_counts.txt中的数据以表格的显示邮件发出,若表的数据不一致当前行以红色标出。
[root@hadoop001 wsktest]# cat table_counts.txt
table_name_1,10000,10000
table_name_2,12000,12000
table_name_3,90000,90002
table_name_4,550,550
table_name_5,8000,7999
table_name_6,30000,30000
4.2脚本如下
#!/bin/bash
#收件箱
EMAIL_RECIVER="57XXXX12@qq.com"
#发送者邮箱
EMAIL_SENDER=5713XXX2@qq.com
#邮箱用户名
EMAIL_USERNAME=5713XXX2
#邮箱密码
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆码。
EMAIL_PASSWORD=laitzphkinowbcei
FILE1_PATH="/root/wsktest/2.png"
#smtp服务器地址
EMAIL_SMTPHOST=smtp.qq.com
EMAIL_TITLE="测试"
html_input(){
echo "<tr>
<td>$1</td>
<td>$2</td>
<td>$3</td>
</tr>" >>/root/wsktest/mail.html
}
html_input_red(){
echo "<tr bgcolor="#FF0000">
<td>$1</td>
<td>$2</td>
<td>$3</td>
</tr>" >>/root/wsktest/mail.html
}
set_info(){
i=1
echo "
<table border=1 border=1 cellspacing='0' cellpadding='0' >
<tr>
<th>table_name</th>
<th>source_count</th>
<th>target_count</th>
</tr>" > /root/wsktest/mail.html
table_counts=$(awk -F "," '{print $1}' /root/wsktest/table_counts.txt) #表计数集合
for tablename in $table_counts
do
j=2
html_sour_count=$(awk -F "," 'NR==i { print $j}' i=$i j=$j /root/wsktest/table_counts.txt) #mysql中对应的计数
let "j++"
html_tar_count=$(awk -F "," 'NR==i { print $j}' i=$i j=$j /root/wsktest/table_counts.txt) #数仓中对应的计数
if [ "$html_sour_count" == "$html_tar_count" ];then
html_input $tablename $html_sour_count $html_tar_count #构造每行表格信息
else
html_input_red $tablename $html_sour_count $html_tar_count #构造每行表格信息
fi
let "i++"
echo $tablename $html_sour_count $html_tar_count $i $j
done
echo "</table>" >> /root/wsktest/mail.html
} # 制作mail.html,并使用邮件发送
set_info
EMAIL_EXCEL=$(cat /root/wsktest/mail.html)
sendEmail -f ${EMAIL_SENDER} -t ${EMAIL_RECIVER} -s ${EMAIL_SMTPHOST} -u ${EMAIL_TITLE} -xu ${EMAIL_USERNAME} -xp ${EMAIL_PASSWORD} -m ${EMAIL_EXCEL} ${EMAIL_CONTENT} -a ${FILE1_PATH} -o message-charset=utf-8 -o message-content-type=html
4.3执行脚本
[root@hadoop001 wsktest]# sh test2.sh
table_name_1 10000 10000 2 3
table_name_2 12000 12000 3 3
table_name_3 90000 90002 4 3
table_name_4 550 550 5 3
table_name_5 8000 7999 6 3
table_name_6 30000 30000 7 3
Apr 13 18:31:31 hadoop001 sendEmail[14481]: Email was sent successfully!
4.4邮件截图如下
标签:shell,name,sendEmail,wsktest,html,table,EMAIL,邮件 来源: https://blog.csdn.net/qq_32641659/article/details/89296265