perl发送html格式的邮件,shell之发送html格式邮件-Go语言中文社区

1.开启QQ邮箱服务器SMTP服务

本人多次尝试使用mail发送html格式的邮件,但是显示的还是文本,失败。最终使用了sendEmail客户端发送带表格的邮件,首先配置qq邮箱开启SMTP服务

流程如下图:设置-》账户

6a271ffc9b6845d474067b8ac7a08fa0.png

开启SMTP服务-》生辰授权码

897a3e3fd3ab8e9593f597d7df7e838e.png

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!

7425c72cf2bdac366b69df60d19c5fa6.png

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 "

$1$2$3" >>/root/wsktest/mail.html

}

html_input_red(){

echo "

$1$2$3" >>/root/wsktest/mail.html

}

set_info(){

i=1

echo "

table_namesource_counttarget_count

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 "

" >> /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邮件截图如下

36a5fd819669caf9d52e7e9871b64557.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值