Linux一键发送邮件脚本-仅15行代码(亲测有效)

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文档。

安全注意事项

  1. 保护app_key: 不要将包含真实app_key的脚本公开分享
  2. 权限控制: 脚本文件应该只有授权用户可执行
  3. API限制: 注意API的调用频率限制,避免过度使用

总结

这个15行代码的邮件发送脚本虽然简单,但非常实用。我本人在生产环境中使用多年,稳定可靠。它特别适合:

  • 服务器监控报警
  • 定时任务执行通知
  • 自动化运维脚本集成
  • 系统状态报告

通过这个脚本,你可以轻松实现"一键发邮件"的功能,大大提高了运维效率。希望这个分享对大家有帮助,如果有任何问题,欢迎在评论区交流!


温馨提示: 本文分享的app_key为示例值,实际使用时请替换为在AokSend平台申请的真实密钥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值