mail通过shell脚本给邮箱发送邮件
1.安装和配置sendmail
通过Linux系统自带的mail
命令即可对公网邮箱发送邮件。不过mail命令是依赖sendmail的,所以我们需要先检查安装和配置sendmail。一般系统都自带sendmail,但是只能给内网的邮箱发邮件。如果想给公网的邮箱发邮件(比如qq邮箱)就需要配置sendmail.
先尝试用mail发送一封邮件
#mail -s 邮件主题 邮件接收地址(我这里就用的自己的qq邮箱)
mail -s "hello,my name is liunx" xxxxxx@qq.com
发送失败,因为没有安装mail
root@VM-4-11-ubuntu:~# mail -s "hello Liunx" xxxxx@qq.com
Command 'mail' not found, but can be installed with:
apt install mailutils
You have new mail in /var/mail/root
他的报错信息中建议我们apt install mailutils
,那我们就输入这个命令等待安装
apt install mailutils
安装完成后我们再尝试发送邮件
#mail -s 邮件主题 邮件接收地址(我这里就用的自己的qq邮箱)
mail -s "hello,my name is liunx" xxxxx@qq.com
提示你输入Cc地址,即邮件抄送地址,没有抄送地址则直接回车就完成了邮件的发送。接着会让你输入邮件正文,当邮件正文输入完成后,需要按CTRL+D结束输入。此时我们不填写邮件正文,直接按CTRL+D结束输入。它会提示我们Null message body; hope that’s ok
。

此时来看我们的qq邮箱,已经收到了此邮件,只有主题没有内容,因为我们就是这样发的。(注意:qq邮箱可能会将邮件拦截到垃圾箱,自己找一下,不要问我怎么知道的)

2.mail 发送的几种方法
输入mail --help 查找mail命令的用法,或者看下面的
1) 无邮件正文
mail -s "主题" 收件地址
2) 有邮件正文
-
mail -s "主题" 收件地址 < 文件(邮件正文.txt)
-
echo "邮件正文" | mail -s 邮件主题 收件地址
//使用管道发送邮件
root@VM-4-11-ubuntu:/etc# echo "2323" | mail -s "1111" xxxxxx@qq.com
You have new mail in /var/mail/root
看自己的邮箱,已经收到了

- cat 邮件正文.txt | mail -s 邮件主题 收件地址
3) 带附件
-
mail -s "主题" 收件地址 -a 附件 < 文件(邮件正文.txt)
-
% mail -s "邮件主题" xxxxxx@qq.com -a /data/findyou.tar.gz < /data/findyou.txt
3.shell脚本发送邮件
已经知道命令怎么用了,用shell自动发送还不简单吗
- 创建一个.sh文件
vim mailTest.sh
输入以下内容,根据具体情况具体修改,保存退出
#! /bin/bash
echo "您好,我是自己" | mail -s "mail测试邮件" xxxxxx@qq.com
echo "邮件发送成功"
给当前脚本添加执行权限,然后执行
#添加执行条件
chmod +x mailTest.sh
#当前文件夹下执行
./mailTest.sh
查看自己的qq邮箱,已经收到了

4.参考博客