说明:因为明天统计疫情健康打卡,需要通知同学完成打卡,最开始是一个人一个人的进行QQ通知,为了方便通知,我利用Linux写了一个
shell
定时群发邮件提醒脚本,如果大家有需要的可以参考我的方式方法下面我将我进行配置的方法分享给大家
1.Linux安装邮件服务
因为Linux默认没有安装mail邮件服务,我们将进行安装,输入安装命令等待几秒即可安装成功
1 | yum install mailx |
2.配置发送邮件服务即你的邮箱
2.1 在命令行中输入 vim /etc/mail.rc
后回车
2.2在文件的最后添加下面配置
编辑该文件前需要 先按键盘
i
进入编辑状态
1 | # smtp服务器认证的用户名 |
2.3获取授权码
- 先登录qq邮箱,登录成功后点击
设置
找到账户
- 找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 然后点击生成授权码
2.4保存配置
先按键盘上的 ESC
退出编辑状态,然后输入 :wq!
保存退出
3.生成安全证书
发送邮件需要安全证书,通过下面命令来生成
1 | mkdir -p /root/.certs/ |
注意:生成完成之后,修改
mail.rc
邮件配置,修改nss-config-dir
为上面命令生成的/root/.certs
,保存即可。
4.邮件测试
1 | echo "测试邮件" | mail -s -v "测试" xiaoandx@qq.com |
如果收到邮件即测试成功
5.编写shell脚本
根据我的实际情况,我需要一个群发邮件的脚本,考虑到群发,我打算实用循环结合数组的形式
5.1先创建一个邮件集合
1 | emailList=( |
5.2写循环体
1 | for var in ${emailList[@]}; do |
补充说明:
1
2
3
4
5
6
7
8
9 > echo "所有的内容如下:" ${emailList[@]}
>
>
> echo "数组的长度:" ${ #emailList[*]}
>
> for var in ${emailList[@]} do
> echo "打印的内容:" $var
> done
>
5.3发送邮件代码
1 | echo "$var 同学你好 [$endDateEmail] 今天你还没有完成"到梦空间"打卡,登录软件确认并完成打卡(如果完成打卡请忽略该邮件) 说明:此邮件将每天定时发送即大家提醒完成健康打卡" | mailx -s ["$endDateEmail]疫情健康打卡提醒" $var |
5.4 测试
6.附件(完整代码)
1 | !/bin/bash |