有时候,监控一个系统需要在系统出现警告时通过shell发送邮件来通知相关的负责人。本文讲讲如何shell发送邮件。

一种是普通邮件,通过附件描述详细报告;一种是高级邮件(哈哈),本来就是告警,还不赶快看,还要慢慢下载附件打开看?所以将附件内容以HTML直接展示到正文处,并通过样式标记警告。

1.安装sendEmail工具

下载、解压、配置环境变量

]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

]# tar -zxf sendEmail-v1.56.tar.gz -C SendEmail/

#配置环境变量这里不一样,不在profile文件里配置,而是拷贝到系统环境变量已有的路径中

]# cd ~/myApp/SendEmail/

]# cp sendEmail /usr/local/bin/

2.开启邮箱的SMTP

本文使用QQ邮件作为发送者

设置 -> 账户 -> 下图中开启

3.发送邮件

QQ邮箱对SMTP有如下说明:

#!/bin/bash

RECIVER="Wish0123@163.com"

SENDER="964478654@qq.com"

SENDER_USERNAME=964478654

#密码填写SMTP第三方客户端授权码

SENDER_PASSWD=***********

ATTACHMENT_PATH=/root/workspace/sh/attach_test.txt

#如下图描述,作为邮件发送方应填这个hostname

STMP_HOST=smtp.qq.com

MESSAGEL_SUBJECT="Have Fun"

MESSAGE_BODY="报警啊..."

sendEmail -f $SENDER -t $RECIVER -a $ATTACHMENT_PATH \

-s $STMP_HOST -xu $SENDER_USERNAME -xp $SENDER_PASSWD \

-u $MESSAGEL_SUBJECT -m $MESSAGE_BODY \

-o message-charset=utf-8

发送后报错了:

*******************************************************************

Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client

is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER

possibly with SSL_ca_file|SSL_ca_path for verification.

If you really don't want to verify the certificate and keep the

connection open to Man-In-The-Middle attacks please set

SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.

*******************************************************************

at /usr/local/bin/sendEmail line 1906.

invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 444.

意思是SSL版本不对,原因是在cent7中Perl的版本5.16,而应该使用更低版本。或者不用SSL,也就需要在脚本最后一行的sendEmail命令添加一个参数-o tls=no

sendEmail -f $SENDER -t $RECIVER -a $ATTACHMENT_PATH \

-s $STMP_HOST -xu $SENDER_USERNAME -xp $SENDER_PASSWD \

-u $MESSAGEL_SUBJECT -m $MESSAGE_BODY \

-o message-charset=utf-8 -o tls=no

发送成功了!

我擦,居然被当成诈骗钓鱼邮件。。

4.HTML版

邮箱直接展示html需要两个条件:

一是把要展示的数据使用html标签封装起来,就可以随意增加样式了;

二是在sendEmail增加参数-o message-content-type=html

这里是根据系统内存情况发送系统邮件,当集群中机器的使用内存超过总内存80%的机器信息标红。

[root@NN1 sh]# cat memory_info

ip consum free total

192.168.1.10 100 100 200

192.168.1.11 1 239 240

192.168.1.12 350 50 400

192.168.1.13 40 24 64

192.168.1.14 77 33 110

192.168.1.15 150 250 400

编写脚本

#!/bin/bash -x

RECIVER="Wish0123@163.com"

SENDER="964478654@qq.com"

SENDER_USERNAME=964478654

#密码填写SMTP第三方客户端授权码

SENDER_PASSWD=xuxjxankheuubcjd

STMP_HOST=smtp.qq.com

MESSAGEL_SUBJECT="Have Fun"

HTML_PATH=html_path

echo "

echo "ipconsumfreetotal">>$HTML_PATH

echo "

">>$HTML_PATH

create_tr() {

i=2

lines=$(cat memory_info | wc -l)

while [ $i -le $lines ]

do

j=1

ip=$(awk 'NR==i {print $j}' i=$i j=$j memory_info)

let "j++"

m=$(awk 'NR==i {print $j}' i=$i j=$j memory_info)

let "j++"

f=$(awk 'NR==i {print $j}' i=$i j=$j memory_info)

let "j++"

t=$(awk 'NR==i {print $j}' i=$i j=$j memory_info)

tr="

"

#shell不能直接作小数运算

#更简单的运算写法是$[$m + 5]

if [ $(expr $m \* 5) -gt $(expr $t \* 4) ]; then

tr="

"

fi

echo $tr>>$HTML_PATH

echo "

"$ip"">>$HTML_PATH

echo "

"$m"">>$HTML_PATH

echo "

"$f"">>$HTML_PATH

echo "

"$t"">>$HTML_PATH

echo "

">>$HTML_PATH

let "i++"

done

}

create_tr

echo "

">>$HTML_PATH

echo "

">>$HTML_PATH

MESSAGE_BODY=$(cat $HTML_PATH)

sendEmail -f $SENDER -t $RECIVER -a $ATTACHMENT_PATH \

-s $STMP_HOST -xu $SENDER_USERNAME -xp $SENDER_PASSWD \

-u $MESSAGEL_SUBJECT -m $MESSAGE_BODY \

-o tls=no message-charset=utf-8 message-content-type=html

发送成功!

好玩吧~

邮件群发 php shell,Shell发送邮件以HTML展示相关推荐

  1. Shell脚本发送邮件(CentOS+mailx+QQ邮箱)

    1. mailx 1. 准备工作 打开邮箱设置,开启pop3/smtp服务和imap/smtp服务 安装mailx:yum install -y mailx 2. 配置 设置/etc/mail.rc文 ...

  2. centos 邮件群发服务器,CentOS 使用 MUTT发送邮件

    有些时候我们需要在CentOS服务器上发送邮件,例如备份MySQL数据库并发送到指定邮箱,这里我们就说下如何从CentOS的shell命令发送邮件. 检查.安装.启动sendmail //检查 ps ...

  3. python发送邮件群发_Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发

    邮件营销,一个昔日辉煌,如今没落的广告营销方式,曾经的恶意广告邮件群发,到现在还存留着的大站协议群发,可能还是有不少人能够做到正常群发邮件,但大概率很多人都不会点开邮件查看邮件内容吧,除非是很许可的, ...

  4. 电子邮箱如何大量发送邮件?TOM VIP邮箱邮件群发的建议

    明确了要做邮件营销,却不知从何入手?这是很多人业务拓展人士所遇到的问题.下面由从业多年的TOM VIP邮箱为大家分享下~ 首先,在邮件群发时品牌怎么选? 影响群发效果的几个关键因素,发信数量.发信通道 ...

  5. 自建邮局服务器| 批量邮件群发系统PowerMTA+oem(mumara,mailwizz, interspire)

    自建邮局服务器| 批量邮件群发系统PowerMTA+oem(mumara,mailwizz, interspire) PowerMTA4.5(最好用的 群发邮件软件)是用于大批量多ip开发的邮件传递邮 ...

  6. Qt利用avilib实现录屏功能_利用“别名”实现Sendmail的邮件群发和邮件备份功能...

    前序 Sendmail服务器是一款经典的邮件发送软件,利用SMTP协议,实现邮件的发送,在CentOS7 邮件服务器部署(sendmail)中,我们学习了sendmail的基础配置,今天我们通过Lin ...

  7. EDM邮件群发十大技巧提升邮件群发效果

    有很多人抱怨现在邮件群发没有什么效果,其实不然,每一种推广方式都有他的优势,没有看到效果说明你没有掌握好方法.个人觉得EDM邮件群发的优势在于传播速度快.不受地域限制.不受时间限制.邮件内容能够多元化 ...

  8. 回复群邮件导致邮件服务器,电子邮件逐个发-邮件群发软件-使用手册

    电子邮件逐个发是基于SMTP服务,一对一传递Email的邮件群发软件.使用Outlook或者Web网页方式同时给多人发送邮件,收件人地址栏会将所有收件人的Email地址都显示出来,发出的邮件既容易进垃 ...

  9. java群发邮件_161013、java实现邮件群发带附件

    要完成Java群发邮件功能,首先须加入mail.jar和activation.jar这两个包 下面是邮件的例子: import java.io.File; import java.util.Prope ...

最新文章

  1. linux能修复根目录硬盘,Linux系统报错修复的方法
  2. 【项目管理】老板与客户意见冲突怎么办?
  3. editor编辑器为什么头部信息会不见_简单聊一聊一个前端编辑器的性能优化
  4. 46个不可不知的生活小常识
  5. linux添加变量6,Linux下查看和添加环境变量
  6. android 自定义progressdialog,android自定义ProgressDialog加载效果
  7. 316 Remove Duplicate Letters 去除重复字母
  8. 大型网站架构的演化[转]
  9. Oracle下载账户
  10. 智能消防栓监控系统解决方案
  11. Qt Flash 播放
  12. 最全的LBS手机定位技术说明
  13. 微信小程序制作——获取用户信息
  14. 华为机考,华为笔试,软件类,2020年8月19日题目,超详细解答。
  15. [MySQL 工具] pt-query-digest使用出错问题分析Can't locate Time/HiRes.pm in @INC
  16. 打印机不打印计算机原因,打印机正常但无法打印原因以及如何解决
  17. IPv6下的DHCPv6
  18. 指针型函数实现插入字符
  19. newman的基本使用
  20. 并行流parallel 和 parallelStream

热门文章

  1. Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁
  2. Linux虚拟文件系统VFS的相关数据结构和操作
  3. gdb 调试java进程_使用GDB调试JNI代码
  4. 差异表达基因变化倍数_2020年筛个基因也还能发SCI?
  5. 交换机接口用了那几根线_交换机接口知识大全!网络从业者必懂!
  6. c语言学习-从键盘输入10个字符,按照字典顺序将其排序输出(二维字符数组)
  7. [Unity脚本运行时更新]C#4新特性
  8. android打包成apk会屏蔽注解,Android解决混淆打包之后注解被去掉的问题-Go语言中文社区...
  9. springCloud 学习记录过程
  10. 使用TensorFlow.js的AI聊天机器人四:改进的Trivia Expert