快速部署一个轻量级邮件发送 API 服务,Go 语言开发,Docker 快速部署
一、简介
- 这是一个基于 Gin 框架的邮件发送服务,对外提供API,实质是通过第三方SMTP发送邮件
- 提供一个简易的Web UI,可在线查看发送记录
- 支持Docker快速部署,非常轻量
- 通过一个GET请求就能发送邮件,适合快速接入终端命令行、shell脚本、各种代码请求等
- 该工具的开源地址:github.com/luler/hello_email_tool
- 该工具的主要功能与逻辑参考下图:

二、安装
1. go环境中,可以直接源码运行
git clone https://github.com/luler/hello_email_tool
cd hello_email_tool
go mod tidy
cp .env.example .env #编辑SMTP 邮件配置、邮件接口授权码
go run main.go serve
2. 通过Docker快速部署(建议)
- 新建docker-compose.yml,配置如下
services: hello_email_tool: image: ghcr.io/luler/hello_email_tool:latest restart: always ports: - 7878:3000 volumes: - ./runtime:/app/runtime #这里会保存sqlite数据库 environment: - TZ=${TZ:-Asia/Shanghai} #时区 - PORT=${PORT:-3000} #服务端口 #数据库配置 - DATABASE_DEFAULT_DRIVER=${DATABASE_DEFAULT_DRIVER:-sqlite} - DATABASE_DEFAULT_NAME=${DATABASE_DEFAULT_NAME:-runtime/hello_email_tool.sqlite} #SMTP邮件配置,如下必须设置正确配置,如企业邮箱、QQ邮箱账号的SMTP配置 - SMTP_HOST=${SMTP_HOST:-smtp.example.com} - SMTP_PORT=${SMTP_PORT:-587} - SMTP_USERNAME=${SMTP_USERNAME:-your_email@example.com} - SMTP_PASSWORD=${SMTP_PASSWORD:-your_password} - SMTP_FROM=${SMTP_FROM:-your_email@example.com} - SMTP_FROM_NAME=${SMTP_FROM_NAME:-EmailTool} # 邮件接口授权码,必须修改为复杂的 - EMAIL_AUTH_CODE=${EMAIL_AUTH_CODE:-your_auth_code} - 配置完成,直接执行如下1命令启动服务
docker-compose up -d
三、使用
1. 通过API发送邮件
- 邮件发送接口
请求地址: /api/email
请求方式: GET / POST
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| auth_code | string | 是 | 授权码,需与环境变量 EMAIL_AUTH_CODE 一致 |
| to | string | 是 | 收件人,多个用逗号分隔 |
| cc | string | 否 | 抄送人,多个用逗号分隔 |
| subject | string | 是 | 邮件主题 |
| body | string | 是 | 邮件正文 |
| is_html | bool | 否 | 是否为 HTML 格式,支持 1/true |
| from_name | string | 否 | 发件人名称,默认使用环境变量 SMTP_FROM_NAME |
POSTMAN 请求示例:
2. 通过Web UI查看邮件发送记录
- 直接访问地址:http://server_ip:7878/,进入邮件发送列表页面
需要授权码,输入启动时设置EMAIL_AUTH_CODE变量的值
成功授权登录进入,看查看管理邮件发送日志
查看记录详情
四、总结
- 这是一个极简的邮件发送服务,优点就是可以把SMTP发送转成API接口发送,兼容不支持SMTP的客户端
- 提供简单的邮件记录与统计功能,可以知道发送了什么邮件、发了多少邮件、发送成功与失败
- 支持Docker一键部署,轻量内存占用低,低配置,易于集成
- 适合作为一个开发测试协助工具,发送一些告警信息等
推荐下个人站点:cas.luler.top/
关于 LearnKu
推荐文章: