沃梦达 / IT编程 / 前端开发 / 正文

shell之发送html格式邮件

文章目录1.开启QQ邮箱服务器SMTP服务2.安装sendEmail3.发送带附件的邮件3.1sendEmail命令详解3.2编写test.sh脚本如下3.3执行脚本 sh test.sh4.发送带html表格的邮件4.1表格数据4.2脚本如下4.3执行脚本4.4邮件截图如下...

文章目录

      • 1.开启QQ邮箱服务器SMTP服务
      • 2.安装sendEmail
      • 3.发送带附件的邮件
        • 3.1sendEmail命令详解
        • 3.2编写test.sh脚本如下
        • 3.3执行脚本 sh test.sh
      • 4.发送带html表格的邮件
        • 4.1表格数据
        • 4.2脚本如下
          • 4.3执行脚本
        • 4.4邮件截图如下

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之发送html格式邮件