Linux服务器调用API发送通知邮件的实现方案
今天需要在Centos7.9服务器上做一个脚本,实现使用bash文件通过定时执行的方式发送邮件,研究了一下发现可以使用邮件API的方式进行发送,下面是我实现的方案:
准备工作:
需要一台linux服务器。
需要服务器已安装 curl。
需要注册了AokSend账号,并绑定域名制作发信邮箱(获取API_key)和邮件模板(获取邮件模板ID)。
第一步准备Linux服务器并安装curl指令
比如我用的是Linux的centos7.9。然后安装curl指令
yum install curl -y # CentOS
检查curl是否安装成功
curl --version
如果 curl 已安装,该命令会输出 curl 的版本信息,包括版本号、支持的协议等。如果未安装,会提示命令未找到。
比如我的服务器返回:
[root@host ~]# curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.90 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
第二步配置AokSend邮件api
注册AokSend账号之后,绑定自己的域名,然后按要求制作域名解析,并回来验证域名解析是否生效。生效之后制作一下发信邮箱,邮箱后面是可以获取到API_key。然后制作一下邮件模板,模板通过审核之后才能看到邮件模板ID。比如我的模板是:
这一步主要是获取API_key和邮件模板ID。有了这两个才能放到下面的sh文件里面实现发送邮件。
注意:AokSend是付费产品,差不多15块钱一万封邮件,价格很便宜,适合日常使用。
第三步新建sh文件并写入代码
在root目录新建 send.sh 文件,并写入下面的代码:
# 调用 AokSend API 发送邮件通知
# 邮件标题和内容变量 {{tongzhi}} 替换为实际通知信息
NOTIFICATION="这是通知邮件信息,请检查服务器状态!"
# API 请求参数
API_URL="https://www.aoksend.com/index/api/send_email"
API_KEY="50ad6789【写入自己的API_Key】51221e177c"
TEMPLATE_ID="E_10【写入自己的邮件模板ID】2057"
TO_EMAIL="me【写入自己希望收到邮件的邮箱】u@163.com"
# 使用 curl 发送请求
curl -X POST "$API_URL" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "app_key=$API_KEY" \
-d "to=$TO_EMAIL" \
-d "template_id=$TEMPLATE_ID" \
-d 'data={"tongzhi":"'"$NOTIFICATION"'"}'
第四步设置触发条件
比如我可以设置服务器重启的时候触发一次邮件发送,发送内容给我提示服务器自动重启了。或者设置触发条件为端口服务器停止了,可以发邮件提示我重启服务器的指定端口的服务。也可以简单的设置为每天凌晨2点的定时任务,发一封邮件通知自己服务器正常运行。也可以设置某个定时任务操作完成之后执行一次发邮件,提示自己某操作已定时自动执行成功。