Linux的shell下发送mail的工具

背景

项目中搭建了一套集群环境,整个集群机器的网络可用性通过一个shell脚本来进行监控。该脚本在检测网络连通性失败的情况下会打印错误日志并发送邮件通知给相关人员。那如何使用linux命令来发送邮件呢?

这里找到了一个好工具:mailx

简介

Mailx is an intelligent mail processing system, which has a command syntax reminiscent of ed(1) with lines replaced by messages. It is based on Berkeley Mail 8.1, is intended to provide the functionality of the POSIX mailx command, and offers extensions for MIME, IMAP, POP3, SMTP, and S/MIME. Mailx provides enhanced features for interactive use, such as caching and disconnected operation for IMAP, message threading, scoring, and filtering. It is also usable as a mail batch language, both for sending and receiving mail.

Mailx是一个mail处理程序,拥有这丰富的命令行语法来发送邮件。

安装

我们使用如下命令进行安装:

#centos
sudo yum install mailx -y
#Ubuntu
sudo apt install heirloom-mailx -y

配置

配置文件

Centos:

/etc/mail.rc

Ubuntu:

/etc/nail.rc或者/etc/s-nail.rc

配置内容

#/etc/s-nail.rc 替换成实际系统的配置文件
cat >> /etc/s-nail.rc << EOF
set smtp=smtp.126.com
set from= xxx@126.comset 
set smtp-auth-user=xxx@126.com
set smtp-auth-password=DUFPNGHRMZTTSXWH
set smtp-auth=login
EOF

解释一下:

  • smtp:指的是smtp服务的地址,这里我使用的是126邮箱的smtp服务地址
  • from:指的是邮件源地址
  • smtp-auth:指的是邮箱用户名
  • smtp-auth-password:指的是客户端授权码(不是邮箱密码)
  • smtp-auth:默认设置为login即可

发送邮件

发送邮件分为交互式和非交互式,其中非交互式又分为两种形式。

交互式

这种我们一般用的少,主要是用于测试:

输入:mail xxx@163.com

输入主题

输入内容

按ctrl+d,结束输入,然后回车 

非交互式

1)echo "邮件内容" | mail -s "主题" 邮箱地址

我用的就是该方式,如下图:

2)mail -s "主题" "邮箱地址" < "path/filename"

这种是直接把指定的文件内容读取出来作为邮件内容发送 

提示:如果有多个邮箱接收人,以逗号分隔

博主:测试生财(一个不为996而996的测开码农)

座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。

内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。

csdn:https://blog.csdn.net/ccgshigao

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

微信公众号:测试生财(定期分享独家内容和资源)

 

 

原文地址:https://www.cnblogs.com/qa-freeroad/p/13908552.html