一、安装
apt install sendemail
二、获取邮件授权码
我这里是用的QQ,在QQ邮箱中,点击设置,开启SMTP服务,拿到授权码:
三、编辑脚本
vim sendemail.sh
#!/bin/bash
account='【你的QQ】@qq.com'
password='【授权码】'
to=$1
subject=$2
content=$3
sendemail -f $account -t $to -s smtp.qq.com:465 -u $subject -xu $account -xp $password -m $content
说明:
-f 表示发送者的邮箱 -t 表示接收者的邮箱 -cc 表示抄送发给谁 -bcc 表示暗抄送给谁 -o message-content-type=html 邮件内容的格式,html表示它是html格式 -o message-charset=utf8 邮件内容编码 -s 表示SMTP服务器的域名或者ip -u 表示邮件的主题 -xu 表示SMTP验证的用户名 -xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别) -m 邮件的内容 -a 要发送的附件
四、执行命令
./sendemail.sh 【你的QQ】@qq.com 邮件主题 邮件内容
五、查看结果
出现如下打印,可以查看邮件是否收到消息
那怎么添加附件呢,对于这个指令来说 -a就是增加附件,首先我们在sh文件上增加-a,先用file=$4,就是指的命令行的第四串数据,填入附件的地址/root/data/hzy/hzylog.txt。
在命令行上运行这个脚本,后面附带四串信息,分别是接收方邮件地址、邮件主题、邮件内容、附件的地址。可以看到发送成功,如上图。
六、注意事项
1.如果出现如下打印:bash: ./sendemail.sh: Permission denied,表明脚本没有权限运行,需要为此脚本增加权限:
chmod 777 sendemail.sh
2.邮件主题和邮件内容,如果发现发送不完全,可以单独加上“”,比如“邮件主题” “邮件内容”,这样即使内容有空格也能全部发送出去。
3.要想发送,ubuntu要能联网,这是前提条件。
4.如果运行脚本后,发现命令行为空,感觉要我们输入信息的样子,这个时候很大概率是端口没开放,程序一直在等待,直到超时都无法发送,此时我们需要确认下端口是否打开,还不行的话换一个端口再试试。
第二种指令
1.安装:apt-get install heirloom-mailx
2.vim /etc/s-nail.rc 编辑
上面smtp没加上465端口的话,默认就是25端口
3.发送指令:echo 'test2' | heirloom-mailx -s 'test2' 【你的QQ】@qq.com