前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中的邮件功能mailx

Linux中的邮件功能mailx

作者头像
AsiaYe
发布2020-03-26 11:07:40
2.6K0
发布2020-03-26 11:07:40
举报
文章被收录于专栏:DBA随笔DBA随笔

//

Linux中的邮件功能mailx

//

这两天有个临时的任务,某个游戏的开发人员需要定时提取一个表里面的数据,用来做一些统计分析的处理。由于线上的权限控制的比较严格,所以需要DBA在每天早上的10:00准时发送前一天的数据。这个需求如果人工的去执行,那么每天都要记得这个事情,如果某一天忘记了,那就不好了。

最后想了一个方法,就是通过设置crontab定时执行数据导出脚本的方法来实现,但是执行完脚本还需要人工干预将数据从服务器拖拽到本地,然后通过邮件进行发送,这个流程未免有点麻烦。

仔细想想,似乎在上面的基础上,再多加一步邮件发送的功能就好了,如果能从服务器上直接通过邮件的方式发送出去,这样就能解决我们的痛点了。查了查linux的命令,真有这么一个mailx(或者mail命令,这俩用法差不多)的命令,之前没有用过,今天学习了一下:

01

mailx简介

mailx 命令是Linux中专门用来发送和接收邮件的命令,我们可以使用man mailx的命令来查看mailx的使用手册,如果你的机器里面没有mailx这个命令,请使用yum -y install mailx的方法来安装这个依赖。

02

命令介绍

mailx的命令用法这里介绍一下,它包含很多参数,这里我挑选几个最常用的、重要的介绍一下:

-a 这个参数是添加附件用的,也是我们本案例的解决方案

-b 邮件的秘密抄送列表,后面跟邮箱地址,邮箱地址需要使用逗号分隔

-c 邮件的抄送列表

-s 邮件的主题,也就是这封邮件的标题

-f 要发送的文件内容,后面接文件名称,当然,一般情况下,不这么使用该参数,都是利用<文件名的方法来读取文件中的内容

举几个例子说明一下:

1、发送邮件信息

代码语言:javascript
复制
方法一:
echo "Hello" | mail -s "这里是主题" yeyz@126.com
方法二:
mail -s "这里是主题" yeyz@126.com < article.txt

这里可以看到,有两个方法,其中一个使用echo+管道的方法输入文章内容,另一个是使用读入文件的方法来加载文章内容

2、增加附件

代码语言:javascript
复制
mail -s "这里是主题" -a 附件名称 yeyz@126.com < article.txt

上面这个命令,就有了邮件主题、附件、以及收件地址和邮件内容。

这里需要特别注意,-a参数要放在邮件地址的前面!!!网上好多教程都将-a参数放在邮件地址的后面,导致发送邮件的时候报错。当时我也是参考别人的博客,设置了半天,发现写错了,这样的博客在百度上一搜一大把,大家还是要有自己的判断力,不然就可能被带跑偏了。

当我们不知道一个命令的用法的时候,最好的方法还是使用man+命令的方法或者命令+--help的方法去获得该命令的详细介绍

03

重要配置

要使用上面的功能完全实现一封邮件的发送,少不了smtp协议内容的配置,mailx命令的系统级配置文件是/etc/mail.rc,用户级别的默认配置文件是~/.mailrc,也可以通过MAILRC环境变量设置配置文件路径。作为普通用户,我们在本地的~/.mailrc文件进行配置,以下几项配置比较关键:

代码语言:javascript
复制
set from=monit@xxxxx.cn    smtp=xxxxx.cn

set smtp-auth-user=monit@xxxxxcn smtp-auth-password=xxxxx

set smtp-auth=login

其中,

from是邮件的发送地址(注意和命令中的接收地址区分);

smtp是smtp服务器地址;

smtp-auth-user是smtp服务的认证用户;

smtp-auth-password是smtp服务的认证密码;

smtp-auth是smtp的认证方式

如果你们公司有自己的smtp服务器,那就用自己的服务器,如果没有,可以使用公网上的服务器,这里有个网址给出了一些例子:

https://blog.csdn.net/Gents_hu/article/details/92219811

举个例子:

代码语言:javascript
复制
set smtp=smtp.qq.com    //邮箱所在服务器和端口地址
set from="xxxxxxxxx@qq.com"  //你的qq邮箱
set smtp-auth-user="xxxxxxxx@qq.com" smtp-auth-password="*****"  //邮箱密码
set smtp-auth=login  //默认login即可

这样也是可以的,大家不妨自己试试

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档