Linux一键发送邮件脚本-仅15行代码(亲测有效)
在日常的Linux系统管理和运维工作中,我们经常需要通过邮件来接收系统状态、监控报警或任务执行结果。传统配置邮件服务的过程繁琐复杂,需要配置SMTP服务器、认证信息等。今天给大家分享一个我自用的15行代码脚本,可以一键发送邮件,无需复杂配置,亲测有效!
脚本原理
这个脚本基于AokSend的邮件API接口,通过HTTP POST请求发送邮件。相比传统SMTP方式,它具有以下优势:
- 无需配置邮件服务器
- 避免端口被封问题
- 代码简洁,易于集成
- 支持模板化内容
完整脚本代码
#!/bin/bash
# 精简版本。通过sh指令执行sh脚本,即可成功发送邮件。
url="https://www.aoksend.com/index/api/send_email"
app_key="50ad67000000000000001221e177c"
to_email="aoksend@163.com"
template_id="E_1000000000150"
content="这是在Centos通过sh指令执行sh脚本发送的测试邮件。"
data_json="{\"content\":\"$content\"}"
curl -s -X POST "$url" \
-F "app_key=$app_key" \
-F "to=$to_email" \
-F "template_id=$template_id" \
-F "data=$data_json"
详细使用步骤
1. 创建脚本文件
首先,在Linux系统中创建脚本文件。我建议放在 /usr/local/bin/ 目录下,方便全局调用:
# 使用vim创建脚本文件
sudo vim /usr/local/bin/sendmail.sh
# 或者使用nano
sudo nano /usr/local/bin/sendmail.sh
将上面的脚本代码复制到文件中,保存退出。
2. 授予执行权限
创建完成后,需要给脚本文件授予执行权限:
# 授予执行权限
sudo chmod +x /usr/local/bin/sendmail.sh
# 验证权限是否正确
ls -l /usr/local/bin/sendmail.sh
正确的权限显示应该包含 x(执行权限):
-rwxr-xr-x 1 root root 456 Oct 31 10:30 /usr/local/bin/sendmail.sh
3. 执行脚本发送邮件
现在可以通过以下命令执行脚本发送邮件:
# 直接执行脚本
sh /usr/local/bin/sendmail.sh
# 或者如果已经授予执行权限,也可以这样执行
/usr/local/bin/sendmail.sh
4. 验证发送结果
执行脚本后,如果返回以下结果,说明邮件发送成功:
{"message":"\u8bf7\u6c42\u6210\u529f","code":200}
这里的Unicode编码 \u8bf7\u6c42\u6210\u529f 解码后就是中文"请求成功"。
脚本参数详解
让我详细解释一下脚本中的各个参数:
- url: 邮件API的接口地址
- app_key: API认证密钥,需要在AokSend平台申请
- to_email: 收件人邮箱地址
- template_id: 邮件模板ID,可以预先在平台配置
- content: 邮件正文内容
- data_json: 封装邮件数据的JSON格式
自定义配置指南
修改收件人邮箱
将脚本中的 to_email 变量改为你自己的邮箱:
to_email="your-email@example.com"
修改邮件内容
修改 content 变量来自定义邮件内容:
content="这是自定义的邮件内容,可以包含系统状态、报警信息等。"
使用变量动态内容
你可以让脚本接收参数,实现动态内容:
#!/bin/bash
# 接收命令行参数
content=${1:-"默认邮件内容"}
url="https://www.aoksend.com/index/api/send_email"
app_key="50ad67000000000000001221e177c"
to_email="aoksend@163.com"
template_id="E_1000000000150"
data_json="{\"content\":\"$content\"}"
curl -s -X POST "$url" \
-F "app_key=$app_key" \
-F "to=$to_email" \
-F "template_id=$template_id" \
-F "data=$data_json"
这样使用时可以动态指定内容:
sh /usr/local/bin/sendmail.sh "服务器CPU使用率超过90%,请及时处理!"
集成到系统监控中
这个脚本可以轻松集成到各种监控系统中:
1. 系统定时任务监控
# 编辑crontab
crontab -e
# 添加每天9点发送系统状态邮件
0 9 * * * /usr/local/bin/sendmail.sh "每日系统状态报告"
2. 磁盘空间监控脚本
#!/bin/bash
# 检查磁盘空间
disk_usage=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $disk_usage -gt 90 ]; then
sh /usr/local/bin/sendmail.sh "警告:根分区磁盘使用率已达${disk_usage}%!"
fi
3. 服务状态监控
#!/bin/bash
# 检查Nginx服务状态
if ! systemctl is-active --quiet nginx; then
sh /usr/local/bin/sendmail.sh "紧急:Nginx服务已停止!"
# 尝试重启服务
systemctl restart nginx
fi
常见问题解答
Q1: 返回结果中的Unicode编码是什么意思?
A: \u8bf7\u6c42\u6210\u529f 是Unicode编码,解码后就是"请求成功"。如果你希望显示更友好的信息,可以安装 jq 工具来格式化输出:
# 安装jq
sudo yum install jq -y # CentOS/RHEL
sudo apt-get install jq -y # Ubuntu/Debian
# 格式化输出
sh /usr/local/bin/sendmail.sh | jq .
Q2: 如何获取app_key?
A: 需要到AokSend官网注册账号,然后在控制台创建应用并获取API密钥。
Q3: 脚本执行没有输出怎么办?
A: 这可能是因为网络问题或API接口变更。可以添加调试信息:
#!/bin/bash
# 添加调试模式
set -x
# 原有脚本内容...
Q4: 支持附件吗?
A: 当前版本不支持附件,但可以通过扩展API参数来实现,具体参考AokSend的API文档。
安全注意事项
- 保护app_key: 不要将包含真实app_key的脚本公开分享
- 权限控制: 脚本文件应该只有授权用户可执行
- API限制: 注意API的调用频率限制,避免过度使用
总结
这个15行代码的邮件发送脚本虽然简单,但非常实用。我本人在生产环境中使用多年,稳定可靠。它特别适合:
- 服务器监控报警
- 定时任务执行通知
- 自动化运维脚本集成
- 系统状态报告
通过这个脚本,你可以轻松实现"一键发邮件"的功能,大大提高了运维效率。希望这个分享对大家有帮助,如果有任何问题,欢迎在评论区交流!
温馨提示: 本文分享的app_key为示例值,实际使用时请替换为在AokSend平台申请的真实密钥。
3488

被折叠的 条评论
为什么被折叠?



