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= [email protected] 
set [email protected]
set smtp-auth-password=DUFPNGHRMZTTSXWH
set smtp-auth=login
EOF

解释一下:

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

发送邮件

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

交互式

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

输入:mail [email protected]

输入主题

输入内容

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

非交互式

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

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

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

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

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

博主:测试生财

座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。

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

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

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




猜你喜欢

转载自blog.51cto.com/14900374/2546657