Linux 使用 sendmail发送html格式邮件

1.开启 QQ 邮箱的 SMTP,获取授权码

1.1 这里使用了 QQ 邮箱的 SMTP,需要做以下配置:

1.2 qq 邮箱通过生成授权码来设置密码 :

3.安装sendEmail

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#下载安装包
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

4.使用脚本发送测试邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash


#收件者邮箱
EMAIL_RECIVER=979915941@qq.com
#发送者邮箱
EMAIL_SENDER=979915941@qq.com
#邮箱用户名
EMAIL_USERNAME=979915941
#邮箱密码
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆>码。
EMAIL_PASSWORD=ubwrvzzafgdnbbjb
#附件路径
FILE1_PATH="/var/up/haha.jpg"
#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

#附件路径
FILE1_PATH="/root/anaconda-ks.cfg"

#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

执行成功查看结果:

5.发送带html表格的邮件

4.1表格数据

第一列为表名称,第二列为原mysql表数据总量,第三列为数仓HBase的数据总量,目的是将table_counts.txt中的数据以表格的显示邮件发出,若表的数据不一致当前行以红色标出。

1
2
3
4
5
6
7
[root@hadoop001 wsktest]# cat count 
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脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash

#收件箱
EMAIL_RECIVER=979915941@qq.com
#发送者邮箱
EMAIL_SENDER=979915941@qq.com
#邮箱用户名
EMAIL_USERNAME=979915941
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆>码。
EMAIL_PASSWORD=ubwrvzzafgdnbbjb
#附件
FILE1_PATH="/var/up/haha.jpg"
#smtp服务器地址
EMAIL_SMTPHOST=smtp.qq.com
#标题
EMAIL_TITLE="sendmail"


html_input(){

echo "<tr>
<td>$1</td>
<td>$2</td>
<td>$3</td>

</tr>" >> /var/up/mail.html
}


html_input_red(){

echo "<tr bgcolor="#FF0000">
<td>$1</td>
<td>$2</td>
<td>$3</td>

</tr>" >> /var/up/mail.html

}


set_info(){

i=1
echo "<table border=1>
<tr>
<th>table_name</th>
<th>source_count</th>
<th>target_count</th>
</tr>" > /var/up/mail.html

table_counts=$(awk -F "," '{print $1}' /root/date/count ) #第一列的信息
for tablename in $table_counts

do
j=2

html_sour_count=$(awk -F "," 'NR==i {print $j}' i=$i j=$j /root/date/count) #mysql中对应的计数
let "j++"
html_tar_count=$(awk -F "," 'NR==i { print $j}' i=$i j=$j /root/date/count) #数仓中对应的计数

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>" >> /var/up/mail.html
} #制作mail.html,并使用邮件发送

set_info

EMAIL_EXCEL=$(cat /var/up/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执行脚本
1
2
3
4
5
6
7
[root@hadoop001 up]# sh sendmail.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

4.4执行结果

本文标题:Linux 使用 sendmail发送html格式邮件

文章作者:skygzx

发布时间:2019年04月15日 - 12:45

最后更新:2019年04月15日 - 13:01

原始链接:http://yoursite.com/2019/04/15/sendmail发送邮件/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------
0%