文章目录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格式邮件
基础教程推荐
猜你喜欢
- 初学者如何快速搭建Express开发系统步骤详解 2023-07-09
- WebSocket使用以及在vue如何使用问题 2023-07-09
- ajax实现无刷新省市县三级联动 2022-12-28
- 浅谈重绘和回流的解析 2022-11-20
- 未知大小图片在已知容器中的垂直和水平居中问题 2022-10-16
- Ajax跨域问题的解决办法汇总(推荐) 2022-12-28
- jQuery Validator验证Ajax提交表单的方法和Ajax传参的方法 2023-02-14
- 利用HTML5切割上传超大文件 2023-10-28
- 示例解析Ant Design Vue组件slots作用 2023-07-10
- vue中动态引进组件、动态引进js模块文件 2023-10-08