美文网首页
mail通过shell脚本给邮箱发送邮件

mail通过shell脚本给邮箱发送邮件

作者: 小名源治 | 来源:发表于2022-11-02 11:20 被阅读0次

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

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

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

看自己的邮箱,已经收到了


image.png
  • 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邮箱,已经收到了


image.png

4.参考博客

文章1
文章2
文章3

相关文章

网友评论

      本文标题:mail通过shell脚本给邮箱发送邮件

      本文链接:https://www.haomeiwen.com/subject/wlastdtx.html