快速部署一个轻量级邮件发送 API 服务,Go 语言开发,Docker 快速部署

AI摘要
介绍一款基于Gin框架的轻量级邮件发送服务工具,提供API接口将SMTP邮件发送功能封装为Web服务,支持Docker快速部署和简易Web界面管理发送记录。属于技术类开源项目的知识分享。

一、简介

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

快速部署一个轻量级邮件发送 API 服务,Go 语言开发,Docker 快速部署

二、安装

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查看邮件发送记录

四、总结

  • 这是一个极简的邮件发送服务,优点就是可以把SMTP发送转成API接口发送,兼容不支持SMTP的客户端
  • 提供简单的邮件记录与统计功能,可以知道发送了什么邮件、发了多少邮件、发送成功与失败
  • 支持Docker一键部署,轻量内存占用低,低配置,易于集成
  • 适合作为一个开发测试协助工具,发送一些告警信息等

推荐下个人站点:cas.luler.top/

我只想看看蓝天
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!