Linux发邮件shell脚本与群发邮件shell脚本

Linux发邮件shell脚本与群发邮件shell脚本Linux发邮件shell脚本与群发邮件shell脚本说明:因为明天统计疫情健康打卡,需要通知同学完成打卡,最开始是一个人一个人的进行QQ通知,为了方便通知,我利用Linux写了一个shell定时群发邮件提醒脚本,如果大家有需要的可以参考我的方式方法下面我将我进行配置的方法分享给大家1.Linux安装邮件服务因为Linux默认没有安装mail邮件服务,我们将进行安装,输入安装命令等待几秒即可安装成功yuminstallmailx2.配置发送邮件服务即你的邮箱2.1在命令行中输入

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Linux发邮件shell脚本与群发邮件shell脚本

说明:因为明天统计疫情健康打卡,需要通知同学完成打卡,最开始是一个人一个人的进行QQ通知,为了方便通知,我利用Linux写了一个shell定时群发邮件提醒脚本,如果大家有需要的可以参考我的方式方法

下面我将我进行配置的方法分享给大家

1.Linux安装邮件服务

因为Linux默认没有安装mail邮件服务,我们将进行安装,输入安装命令等待几秒即可安装成功

yum install mailx

2.配置发送邮件服务即你的邮箱

2.1 在命令行中输入 vim /etc/mail.rc 后回车

Linux发邮件shell脚本与群发邮件shell脚本

Linux发邮件shell脚本与群发邮件shell脚本

2.2在文件的最后添加下面配置

编辑该文件前需要 先按键盘 i 进入编辑状态

# smtp服务器认证的用户名 
set from=xiaoandx@qq.com
# smtp服务器的地址  
set smtp=smtps://smtp.qq.com:465
# smtp服务器认证的用户名
set smtp-auth-user=xiaoandx@qq.com 
# smtp服务器认证的用户密码(授权码) 
set smtp-auth-password=#################
set smtp-auth=login 
# 忽略验证  
    
set ssl-verify=ignore 
set nss-config-dir=/root/.certs

2.3获取授权码

  • 先登录qq邮箱,登录成功后点击设置 找到账户
  • 找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 然后点击生成授权码

Linux发邮件shell脚本与群发邮件shell脚本

2.4保存配置

先按键盘上的 ESC 退出编辑状态,然后输入 :wq! 保存退出

3.生成安全证书

发送邮件需要安全证书,通过下面命令来生成

mkdir -p /root/.certs/

echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt

certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs

注意:生成完成之后,修改 mail.rc 邮件配置,修改 nss-config-dir 为上面命令生成的 /root/.certs,保存即可。

4.邮件测试

echo "测试邮件" | mail -s -v "测试" xiaoandx@qq.com

如果收到邮件即测试成功

5.编写shell脚本

根据我的实际情况,我需要一个群发邮件的脚本,考虑到群发,我打算实用循环结合数组的形式

5.1先创建一个邮件集合

emailList=(
	"2324671838@qq.com"
	"2826819330@qq.com"
	.....
)

5.2写循环体

for var in ${emailList[@]}; do
	
done

补充说明:

echo "所有的内容如下:" ${emailList[@]} 


echo "数组的长度:" ${ #emailList[*]} 

for var  in ${emailList[@]}  do
 echo "打印的内容:" $var 
done

5.3发送邮件代码

echo "$var 同学你好 [$endDateEmail] 今天你还没有完成"到梦空间"打卡,登录软件确认并完成打卡(如果完成打卡请忽略该邮件) 说明:此邮件将每天定时发送即大家提醒完成健康打卡" | mailx -s ["$endDateEmail]疫情健康打卡提醒" $var

5.4 测试

Linux发邮件shell脚本与群发邮件shell脚本

6.附件(完整代码)

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
endDateEmail=`date +"%Y.%m.%d"`

emailList=(
	"2324671838@qq.com"
	"xiaoandx@qq.com"
)

for var in ${emailList[@]}; do
	echo "$var 同学你好 [$endDateEmail] 今天你还没有完成"到梦空间"打卡,登录软件确认并完成打卡(如果完成打卡请忽略该邮件) 说明:此邮件将每天定时发送即大家提醒完成健康打卡" | mailx -s ["$endDateEmail]疫情健康打卡提醒" $var
done

echo "$endDateEmail 提醒邮件发送成功"

endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179836.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于大数据的舆情分析_舆情与大数据

    基于大数据的舆情分析_舆情与大数据数据工厂,是一套多组件化数据清洗加工及数据存储管理平台,同时能够管理所有的数据库的备份方案。支持多数据源类型的数据同步实现和数据仓库其他的数据源互通。对接收数据进行解压,对外提供压缩后的数据。

    2022年9月20日
    3
  • 【MATLAB】画多段折线图程序「建议收藏」

    【MATLAB】画多段折线图程序「建议收藏」figure(1);T=[12510];P1=[0.710.7320.780.82];P2=[0.730.78230.85150.9223];P3=[0.690.710.730.75];P4=[0.650.690.710.69];%plot(T,P1,’r.’,T,P2,’b.’,T,P3,’g.’);line(T,P1,’Color’,’r’,’M…

    2022年5月29日
    45
  • CentOS8国内镜像下载地址

    CentOS8国内镜像下载地址目录CentOS介绍CentOSLinux和CentOSStream区别镜像下载说明CentOS介绍CentOS是基于RedHatEnterpriseLinux(RHEL/业界最知名的发行版)源代码再编译出来的免费版,因此不仅继承RHEL优越的稳定性(与Debian不分上下),还提供免费更新,因此在服务器提供商、中小型公司中装机量几乎是最大最流行的Linux系统,现在也已正式加入红帽公司。从事互联网技术的同学,CentOS应该是值得你深入了解学习研究的……Ce

    2022年6月12日
    42
  • 验证二叉搜索树 leetcode_二叉树的最长路径

    验证二叉搜索树 leetcode_二叉树的最长路径重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源 原创  2016年05月08日 23:14:19 标签:java equal方法重写 /java /重写equals方法和hashCode方 10077 转载请注明出处: http://blog.csdn.net/javazejian/art…

    2022年8月9日
    7
  • 浅谈TCP和UDP协议

    浅谈TCP和UDP协议TCP 和 UDP 的区别我们大多数人的回答是 TCP 是面向连接的 UDP 是面向无连接的 那么什么是面向连接 什么是面向无连接 再互通之前 面向连接的协议会先建立连接 例如 TCP 会三次握手 而 UDP 不会 所谓的建立连接 是为了在客户端和服务端维护连接 而建立一定的数据结构来维护双方交互的状态 用这样的数据结构来保证所谓的面向连接的特性 例如 TCP 提供可靠交付无差错不丢失不重复按序到达而 UDP 更像 前面那讲提到过的 IP 包 不保证不丢失 不保证按顺序到达再比如 TCP 面向字节流 发送

    2025年8月9日
    2
  • 类型转换异常处理java.lang.RuntimeException

    类型转换异常处理java.lang.RuntimeException前几天在做一个安卓项目的时候一直报java.lang.RuntimeException错,一直调试不出来,今天突然又灵感是不是文件配置出错了,果然在清单文件中少了一句 android:name=”.KXApplication”。02-0510:19:52.429:E/AndroidRuntime(16026):java.lang.RuntimeException:Una

    2022年7月18日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号