Email Account
Email Account 是注册到某个 Space 的 SMTP 发件人。它是把发信服务器地址、登录信息以及发信地址打包保存在一起的资源。当 Script 的 EmailSend statement 执行时,实际的邮件就通过这个 Email Account 发出。例如,服装店商城想在每次收到订单时发送确认邮件,就要先注册好用于发送的 Email Account,再让 Script 引用它。
Email Account 是由 CMA 管理的 Space 下级资源,路径以 /spaces/{spaceId}/email-accounts 为基准。它没有发布(publish)概念。没有状态值或发布阶段,创建后即可立即用于发送。不过,创建并不是无害的只读式操作,而是实际发送一封邮件来验证配置的操作;而且连接信息(endpoint·username·password)一旦创建就无法更改。这些将在下文说明。
资源结构
以下是创建 Email Account 时的响应。sys(系统属性)中包含标识符与版本,正文中包含发件人配置(name·endpoint·username·fromAddress·fromName)。密码(password)不会出现在响应的任何位置。
{
"sys": {
"id": "3trmXRMdKpLc7GfNbyVQeR2WsT9LnU",
"type": "EmailAccount",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-08-04T05:12:44.108Z",
"updatedBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-08-04T05:12:44.108Z",
"version": 1
},
"name": "订单通知发送",
"endpoint": {
"host": "smtp.gmail.com",
"port": 587,
"security": "StartTls"
},
"username": "orders@example-shop.com",
"fromAddress": "orders@example-shop.com",
"fromName": "服装店订单"
}主要键:
sys.id:Email Account 的唯一标识符。用于单条查询·修改·删除路径中的{emailAccountId}。sys.version:资源版本。从 1 开始,每次修改时递增。修改请求时把该值放在X-Weegloo-Version头中发送(参见下文 状态与约束)。name:显示在控制台上的标签(例如订单通知发送)。不用于发送,也不是 From 显示名。 它只是用于区分多个发件人的名称。endpoint:要连接的 SMTP 服务器。由host·port·security三个值组成。username:SMTP 登录用户名。因服务商而异。可能就是邮件地址本身,也可能是发送服务规定的固定字符串或按域名的登录名。fromAddress:发信地址。既是发出信封的退信处(MAIL FROM),也同时作为收件人看到的 From 地址使用。fromName:显示在 From 头中的显示名(可选)。缺省时只显示地址。
密码(password)是只在创建请求正文中发送的只写值,因此既不会出现在上面的响应中,也不会在之后的查询·列表中返回。username 在查询响应中会原样返回输入的值。
系统属性 (sys)
每个 Email Account 都在 sys 对象中包含公共系统属性。space、createdBy、updatedBy 以 Refer 形态({ "sys": { "id", "type": "Refer", "targetType" } })呈现。
| 属性 | 类型 | 说明 |
|---|---|---|
id | string | 资源唯一标识符。 |
type | string | 资源种类。Email Account 始终为 "EmailAccount"。 |
space | Refer<Space> | 该发件人所属的 Space。 |
createdBy | Refer<User> | 注册的用户。 |
createdAt | string (date-time) | 创建时刻。 |
updatedBy | Refer<User> | 最后修改的用户。 |
updatedAt | string (date-time) | 最后修改时刻。 |
version | integer (≥1) | 资源版本。修改时把当前值放在 X-Weegloo-Version 头中发送。 |
正文属性:
| 属性 | 类型 | 说明 |
|---|---|---|
name | string (1~64) | 显示在控制台上的标签。不用于发送,也不是 From 显示名。 |
endpoint | SmtpEndpoint | 要连接的 SMTP 服务器(host·port·security)。 |
endpoint.host | string | SMTP 服务器主机(例如 smtp.gmail.com)。 |
endpoint.port | integer (1~65535) | SMTP 端口。惯例上 587 与 StartTls 搭配,465 与 Tls 搭配。 |
endpoint.security | string | 传输区段安全。StartTls 或 Tls 二者之一。由于会传输密码,不允许明文连接。 |
username | string | SMTP 登录用户名。因服务商而异,可能不是邮件地址。 |
fromAddress | string (email, ≤254) | 发信地址。既是信封退信处(MAIL FROM),也作为 From 头使用。服务器可能会重写(例如 Gmail 强制为认证账户)。 |
fromName | string | From 头显示名。可选。缺省时只显示地址。 |
仅用于创建请求正文的输入:
| 属性 | 类型 | 说明 |
|---|---|---|
password | string | SMTP 登录密码。只写。 不会出现在任何响应中,无法再次读取该值,只能替换(重新创建)。必填。 |
发件人信息与连接信息
Email Account 的值分为两类。这一区分决定了哪些可以修改。
- 连接信息 —
endpoint·username·password。 创建后无法更改。要更换发信服务器或轮换登录信息时,新建一个 Email Account 并删除原有的。密码如上文所述无法再次读取,因此若丢失,不是重置而是按重新创建处理。 - 发件人信息 —
name·fromAddress·fromName。 创建后仍可通过修改(PUT)更改。用于整理标签或更改发信地址·显示名,此时连接信息保持不变。
创建时会实际发送邮件
Email Account 的创建不是只保存配置的操作。在保存之前,服务器会用输入的 endpoint·username·password 实际连接并发送一封测试邮件。 发送对象是 fromAddress,若 username 是其他地址,也可能包含该地址。
- 只有发送成功,资源才会被保存。
- 服务器在连接·认证·发送的任一阶段拒绝时,什么都不会创建并失败,响应中会一并包含服务器返回的失败原因。
因此需注意:用错误的值反复创建,每次都会实际尝试发送。
状态与约束
创建·修改时需遵守的值约束。
| 对象 | 约束 |
|---|---|
name | 1~64 字,必填。 |
endpoint.host | 必填。 |
endpoint.port | 1~65535,必填。 |
endpoint.security | StartTls 或 Tls,必填。不可明文。 |
username | 必填(创建时)。创建后不可变。 |
password | 必填(创建时),只写。创建后不可变(替换即重新创建)。 |
fromAddress | 邮件格式,254 字以内,必填。 |
fromName | 可选。 |
关于行为与权限的规则:
- 连接信息不可变。
Update(PUT)可更改的只有name·fromAddress·fromName。要更改endpoint·username·password,需新建并删除原有的。 - 修改需要版本。
Update请求中把当前sys.version值放在X-Weegloo-Version头中发送。若值不是最新的,会因版本冲突被拒绝。此时重新查询资源,用最新的sys.version重试。 - 密码无法再次读取。 查询·列表的任何位置都不会出现,因此丢失时不是重置而是按重新创建处理。
- 可用的 SMTP 服务器因方案而异。 以预设形式提供的服务商主机(Gmail·Naver·Resend·Brevo)在较低方案中也可注册。预设中没有的任意(自托管)主机需要已登记付款方式才能使用。各方案的策略请参阅 定价方案。
API
以下所有端点的基准 URL 为 https://cma.weegloo.com/v1,Authorization 头中需要认证 CMA 的 Bearer 令牌。修改(PUT)额外需要 X-Weegloo-Version 头。
