5b4774e9c1
- 新增完整的Go客户端库实现,支持邮件服务器API的各种操作 - 实现账户管理、签名管理、邮件发送、审计、配额、通道等功能模块 - 提供ServiceAuth和AppAuth两种认证模式的客户端 - 添加详细的README文档,包含安装指南和使用示例 - 配置.gitignore文件以忽略构建产物和开发工具配置 - 支持分页查询、错误处理和客户端选项配置
201 lines
4.9 KiB
Markdown
201 lines
4.9 KiB
Markdown
# email-serverr-cli
|
|
|
|
Go client library for the Email Server API.
|
|
|
|
## Install
|
|
|
|
```bash
|
|
go get gitea.s1f.ren/shiran/email-serverr-cli
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
### Management Client (ServiceAuth)
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
emailcli "gitea.s1f.ren/shiran/email-serverr-cli"
|
|
)
|
|
|
|
func main() {
|
|
client := emailcli.NewServiceClient(
|
|
"https://your-server.com",
|
|
"your-service-token",
|
|
)
|
|
|
|
// List accounts
|
|
accounts, err := client.ListAccounts(context.Background(), emailcli.AccountListQuery{
|
|
PaginationQuery: emailcli.PaginationQuery{Page: 1, PageSize: 20},
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
for _, a := range accounts.List {
|
|
fmt.Printf("Account: %s (ID: %d)\n", a.Name, a.ID)
|
|
}
|
|
}
|
|
```
|
|
|
|
### Mail Sending Client (AppAuth)
|
|
|
|
```go
|
|
client := emailcli.NewAppClient(
|
|
"https://your-server.com",
|
|
"your-app-key",
|
|
"your-app-secret",
|
|
)
|
|
|
|
resp, err := client.SendMail(context.Background(), emailcli.SendMailReq{
|
|
To: []string{"recipient@example.com"},
|
|
Subject: "Hello",
|
|
Body: "<h1>Hello World</h1>",
|
|
Channel: "default",
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Printf("Mail sent: log_id=%d status=%s\n", resp.MailLogID, resp.Status)
|
|
```
|
|
|
|
## Authentication
|
|
|
|
| Mode | Constructor | Header | Use Case |
|
|
|------|-------------|--------|----------|
|
|
| ServiceAuth | `NewServiceClient` | `Authorization: Bearer <token>` | Management APIs |
|
|
| AppAuth | `NewAppClient` | `X-App-Key` + `X-App-Secret` | Mail sending |
|
|
|
|
## API Reference
|
|
|
|
### Mail (AppAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `SendMail` | Send an email |
|
|
|
|
### Accounts (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `CreateAccount` | Create mail account |
|
|
| `ListAccounts` | List accounts with filters |
|
|
| `GetAccount` | Get account details |
|
|
| `UpdateAccount` | Update account |
|
|
| `DeleteAccount` | Delete account |
|
|
| `ResetAccountSecret` | Reset app secret |
|
|
|
|
### Signatures (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `CreateSignature` | Create signature |
|
|
| `ListSignatures` | List signatures with filters |
|
|
| `GetSignature` | Get signature details |
|
|
| `UpdateSignature` | Update signature |
|
|
| `DeleteSignature` | Delete signature |
|
|
| `AuditSignature` | Approve or reject signature |
|
|
|
|
### Mail Logs (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `ListMailLogs` | List mail logs with filters |
|
|
| `GetMailLog` | Get mail log detail with body |
|
|
| `GetMailStats` | Get status statistics |
|
|
|
|
### Quotas (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `CreateQuota` | Create quota |
|
|
| `ListQuotas` | List quotas with filters |
|
|
| `GetQuotaSummary` | Get quota summary for account |
|
|
| `UpdateQuota` | Update quota |
|
|
| `DeleteQuota` | Delete quota |
|
|
|
|
### Channels (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `CreateChannel` | Create channel |
|
|
| `ListChannels` | List channels with filters |
|
|
| `UpdateChannel` | Update channel |
|
|
| `DeleteChannel` | Delete channel |
|
|
|
|
### Sender Accounts (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `CreateSender` | Create sender under channel |
|
|
| `ListSendersByChannel` | List senders for channel |
|
|
| `UpdateSender` | Update sender |
|
|
| `DeleteSender` | Delete sender |
|
|
|
|
### Audits (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `ListAuditPending` | List pending audit items |
|
|
| `GetAuditPendingDetail` | Get pending item detail |
|
|
| `ApproveAudit` | Approve single item |
|
|
| `RejectAudit` | Reject single item |
|
|
| `BatchApproveAudit` | Batch approve |
|
|
| `BatchRejectAudit` | Batch reject |
|
|
| `ListAuditLogs` | List audit history |
|
|
| `GetAuditStats` | Get audit statistics |
|
|
|
|
### Audit Rules (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `CreateAuditRule` | Create rule |
|
|
| `ListAuditRules` | List all rules |
|
|
| `GetAuditRule` | Get rule details |
|
|
| `UpdateAuditRule` | Update rule |
|
|
| `DeleteAuditRule` | Delete rule |
|
|
| `UpdateAuditRuleStatus` | Toggle rule status |
|
|
| `TestAuditRule` | Test rules against sample |
|
|
|
|
### Queue (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `GetQueueStatus` | Get queue lengths |
|
|
| `ListQueuePending` | List pending queue items |
|
|
| `CancelQueueItem` | Cancel queued mail |
|
|
| `RetryQueueItem` | Retry failed mail |
|
|
|
|
### Health Checks (ServiceAuth)
|
|
|
|
| Method | Description |
|
|
|--------|-------------|
|
|
| `ListCheckLogs` | List check logs |
|
|
| `GetCheckSummary` | Get sender health summary |
|
|
| `TriggerCheck` | Trigger health check |
|
|
|
|
## Error Handling
|
|
|
|
```go
|
|
resp, err := client.SendMail(ctx, req)
|
|
if err != nil {
|
|
var apiErr *emailcli.APIError
|
|
if errors.As(err, &apiErr) {
|
|
fmt.Printf("API error: code=%d message=%s\n", apiErr.Code, apiErr.Message)
|
|
}
|
|
}
|
|
```
|
|
|
|
## Options
|
|
|
|
```go
|
|
client := emailcli.NewServiceClient(
|
|
"https://your-server.com",
|
|
"token",
|
|
emailcli.WithTimeout(60 * time.Second),
|
|
emailcli.WithHTTPClient(customClient),
|
|
)
|
|
```
|