first commit

This commit is contained in:
huangzhenpc
2025-05-23 23:06:09 +08:00
commit 9444bf4802

195
README.md Normal file
View File

@@ -0,0 +1,195 @@
# Stalwart 邮件 REST API Go客户端
这是一个用于管理 Stalwart 邮件服务器的 Go 客户端库,提供了简单易用的接口来创建和管理邮箱用户,以及查询邮件。
## 功能特点
- 创建邮箱用户支持基本认证和API Key认证自动生成随机安全密码
- 查询用户列表
- 获取单个用户信息
- 获取邮箱最新邮件
## 安装要求
- Go 1.18+
- 依赖项:
- github.com/emersion/go-imap
- github.com/emersion/go-message
- gopkg.in/yaml.v3
## 构建和安装
克隆仓库后,使用以下命令构建:
```bash
cd go_stalwart_client
go mod tidy
go build -o bin/create_user cmd/create_user/main.go
go build -o bin/list_users cmd/list_users/main.go
go build -o bin/get_user cmd/get_user/main.go
go build -o bin/get_latest_email cmd/get_latest_email/main.go
```
## 配置文件
项目使用 `config/config.yaml` 进行配置,示例如下:
```yaml
api:
base_url: https://mail.evnmail.com/api
disable_proxy: true
user:
default_domain: evnmail.com
default_quota: 1073741824
auth:
basic:
username: admin
password: your_password_here
api_key: api_your_api_key_here
```
## 使用方法
### 创建用户
```bash
./bin/create_user -e user@evnmail.com -a apikey
```
如果不指定密码,系统会自动生成一个安全的随机密码。
参数说明:
- `-e, --email`: 邮箱地址
- `-p, --password`: 用户密码(可选,不提供则自动生成随机密码)
- `-d, --description`: 用户描述
- `-q, --quota`: 邮箱配额(字节)
- `-a, --auth`: 认证方式 (basic 或 apikey)
- `-u, --username`: 基本认证用户名
- `-P, --password`: 基本认证密码
- `-k, --apikey`: API Key
- `-c, --config`: 配置文件路径
### 查询用户列表
```bash
./bin/list_users -a basic -l 50 -p 1
```
参数说明:
- `-l, --limit`: 最大返回结果数量
- `-p, --page`: 页码
- `-q, --query`: 搜索关键词
- `-a, --auth`: 认证方式 (basic 或 apikey)
- `-u, --username`: 基本认证用户名
- `-P, --password`: 基本认证密码
- `-k, --apikey`: API Key
- `-c, --config`: 配置文件路径
### 获取单个用户信息
通过ID查询
```bash
./bin/get_user -i 123 -a basic
```
通过邮箱查询:
```bash
./bin/get_user -e user@evnmail.com -a basic
```
参数说明:
- `-i, --id`: 用户ID
- `-e, --email`: 用户邮箱地址
- `-a, --auth`: 认证方式 (basic 或 apikey)
- `-u, --username`: 基本认证用户名
- `-P, --password`: 基本认证密码
- `-k, --apikey`: API Key
- `-c, --config`: 配置文件路径
### 获取邮箱最新邮件
```bash
./bin/get_latest_email -e user@evnmail.com -p password -n 3
```
注意:获取邮件时必须提供密码。
参数说明:
- `-e, --email`: 邮箱地址(默认: hayfzgul@evnmail.com
- `-p, --password`: 邮箱密码(必填)
- `-s, --server`: IMAP服务器地址默认: mail.evnmail.com
- `-P, --port`: IMAP服务器端口默认: 993
- `-n, --number`: 获取的邮件数量(默认: 1
- `--no-ssl`: 禁用SSL连接
- `-c, --config`: 配置文件路径
## 项目结构
```
go_stalwart_client/
├── cmd/ # 命令行应用
│ ├── create_user/ # 创建用户命令
│ ├── list_users/ # 列出用户命令
│ ├── get_user/ # 获取用户信息命令
│ └── get_latest_email/ # 获取最新邮件命令
├── pkg/ # 核心库
│ └── api/ # API实现
│ ├── config.go # 配置处理
│ ├── email_api.go # 用户API实现
│ └── email_fetch.go # 邮件获取实现
├── config/ # 配置目录
│ └── config.yaml # 配置文件
├── go.mod # Go模块定义
└── README.md # 说明文档
```
## 注意事项
1. 认证说明:
- 创建用户时推荐使用API Key认证
- 查询用户列表时推荐使用基本认证
- 根据服务器配置,某些功能可能受到权限限制
2. 错误处理:
- 程序会详细输出错误信息,便于排查问题
- 对于获取单个用户详情可能出现"notFound"错误这是服务器API限制
3. 安全提示:
- 创建用户时如果不指定密码系统会自动生成12位随机密码
- 生成的密码包含大小写字母、数字和特殊字符,提供较高的安全性
- 密码仅在创建成功后显示一次,请妥善保存
## 示例输出
创建用户成功后的输出:
```
=== 新创建的用户信息 ===
用户ID: 123
登录名: username
邮箱地址: username@evnmail.com
密码: A8f2@xLp9q!Z
登录信息:
- 登录名: username
- 密码: A8f2@xLp9q!Z
- 邮箱服务器: mail.evnmail.com
```
获取邮件成功后的输出:
```
============================================================
邮件 1/1
------------------------------------------------------------
主题: 测试邮件
发件人: sender@example.com
收件人: recipient@evnmail.com
日期: Wed, 1 Jan 2025 12:00:00 +0800
------------------------------------------------------------
邮件正文:
这是一封测试邮件的内容...
============================================================
```