Email Account
Un Email Account es un remitente SMTP que se registra en un Space. Es un recurso que agrupa y almacena, en una sola pieza, la dirección del servidor desde el que se enviará el correo, las credenciales de acceso y la dirección de remitente. Cuando se ejecuta el statement EmailSend de un Script, el correo real sale a través de este Email Account. Por ejemplo, en la tienda de ropa online, para enviar un correo de confirmación cada vez que entra un pedido, primero se registra el Email Account que se usará para el envío y luego se hace que el Script lo referencie.
Un Email Account es un recurso bajo el Space gestionado en CMA, y su ruta se basa en /spaces/{spaceId}/email-accounts. No existe el concepto de publicación (publish). Sin estados ni fase de publicación, en cuanto se crea ya se puede usar para enviar. En cambio, más abajo se tratan estos dos puntos: la creación no es una acción inofensiva de solo consulta, sino que envía realmente un correo para validar la configuración, y la información de conexión (endpoint, username, password) no se puede cambiar una vez creada.
Estructura del recurso
A continuación está la respuesta de cuando se crea un Email Account. En sys (propiedades del sistema) van el identificador y la versión, y en el cuerpo va la configuración del remitente (name, endpoint, username, fromAddress, fromName). La contraseña (password) no aparece en ninguna parte de la respuesta.
{
"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": "Notificaciones de pedidos",
"endpoint": {
"host": "smtp.gmail.com",
"port": 587,
"security": "StartTls"
},
"username": "orders@example-shop.com",
"fromAddress": "orders@example-shop.com",
"fromName": "Pedidos de la tienda de ropa"
}Claves principales:
sys.id: el identificador único del Email Account. Va en el{emailAccountId}de las rutas de consulta, modificación y eliminación individuales.sys.version: la versión del recurso. Empieza en 1 y aumenta cada vez que se modifica. En las peticiones de modificación se envía este valor en la cabeceraX-Weegloo-Version(véase Estado y restricciones más abajo).name: la etiqueta que se ve en la consola (por ejemplo,Notificaciones de pedidos). No se usa para el envío y no es el nombre visible del From. Es solo un nombre para distinguir varios remitentes.endpoint: el servidor SMTP al que conectarse. Se compone de tres valores:host,portysecurity.username: el nombre de usuario de acceso a SMTP. Varía según el proveedor. Puede ser la propia dirección de correo, una cadena fija que fije el servicio de envío o un acceso a nivel de dominio.fromAddress: la dirección de remitente. Se usa a la vez como la dirección de retorno del sobre (MAIL FROM) y como la dirección From visible para el destinatario.fromName: el nombre visible que aparece en la cabecera From (opcional). Si no lo hay, solo aparece la dirección.
La contraseña (password) es un valor de solo escritura que solo se envía en el cuerpo de la petición de creación, así que no vuelve ni en la respuesta anterior ni en ninguna consulta o listado posterior. El username aparece en la respuesta de consulta tal cual se introdujo.
Propiedades del sistema (sys)
Todo Email Account incluye las propiedades comunes del sistema en el objeto sys. space, createdBy y updatedBy van en forma de Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).
| Propiedad | Tipo | Descripción |
|---|---|---|
id | string | Identificador único del recurso. |
type | string | Tipo de recurso. En un Email Account siempre es "EmailAccount". |
space | Refer<Space> | El Space al que pertenece este remitente. |
createdBy | Refer<User> | El usuario que lo registró. |
createdAt | string (date-time) | Momento de creación. |
updatedBy | Refer<User> | El último usuario que lo modificó. |
updatedAt | string (date-time) | Momento de la última modificación. |
version | integer (≥1) | Versión del recurso. Al modificar se envía el valor actual en la cabecera X-Weegloo-Version. |
Propiedades del cuerpo:
| Propiedad | Tipo | Descripción |
|---|---|---|
name | string (1~64) | La etiqueta que se ve en la consola. No se usa para el envío y no es el nombre visible del From. |
endpoint | SmtpEndpoint | El servidor SMTP al que conectarse (host, port, security). |
endpoint.host | string | Host del servidor SMTP (por ejemplo, smtp.gmail.com). |
endpoint.port | integer (1~65535) | Puerto SMTP. Por convención, 587 se empareja con StartTls y 465 con Tls. |
endpoint.security | string | Seguridad del tramo de transporte. Es uno de StartTls o Tls. Como circula la contraseña, no se permiten conexiones en texto plano. |
username | string | Nombre de usuario de acceso a SMTP. Varía según el proveedor y puede no ser una dirección de correo. |
fromAddress | string (email, ≤254) | La dirección de remitente. Se usa como dirección de retorno del sobre (MAIL FROM) y como cabecera From. El servidor puede reescribirla (por ejemplo, Gmail la fuerza a la cuenta autenticada). |
fromName | string | Nombre visible de la cabecera From. Opcional. Si no lo hay, solo aparece la dirección. |
Entrada exclusiva del cuerpo de la petición de creación:
| Propiedad | Tipo | Descripción |
|---|---|---|
password | string | Contraseña de acceso a SMTP. Es de solo escritura. No aparece en ninguna respuesta, su valor no se puede volver a leer y solo se puede sustituir (recreando). Obligatorio. |
Información de remitente e información de conexión
Los valores de un Email Account se dividen en dos clases. Esta distinción determina qué se puede modificar.
- Información de conexión:
endpoint,username,password. No se pueden cambiar después de la creación. Para mover el servidor de envío o rotar las credenciales se crea un nuevo Email Account y se elimina el anterior. La contraseña, como se explicó arriba, no se puede volver a leer, así que, si se pierde, se gestiona recreando, no restableciendo. - Información de remitente:
name,fromAddress,fromName. Se pueden cambiar también después de la creación mediante modificación (PUT). Se usa para ordenar la etiqueta o cambiar la dirección de remitente o el nombre visible, y en ese caso la información de conexión se mantiene tal cual.
Al crear se envía un correo real
Crear un Email Account no es una acción que solo guarda la configuración. Antes de guardar, el servidor conecta realmente con el endpoint, username y password introducidos y envía un correo de prueba. El destino del envío es fromAddress y, si username es una dirección distinta, puede incluirse también esa dirección.
- El recurso se guarda solo si el envío tiene éxito.
- Si el servidor lo rechaza en cualquiera de las fases de conexión, autenticación o envío, la operación falla sin crear nada, y en la respuesta se incluye el motivo del fallo que devolvió el servidor.
Por lo tanto, hay que tener en cuenta que repetir la creación con valores incorrectos intenta un envío real cada vez.
Estado y restricciones
Restricciones de valor que se respetan al crear y modificar.
| Objeto | Restricción |
|---|---|
name | De 1 a 64 caracteres, obligatorio. |
endpoint.host | Obligatorio. |
endpoint.port | De 1 a 65535, obligatorio. |
endpoint.security | StartTls o Tls, obligatorio. No se admite texto plano. |
username | Obligatorio (al crear). Inmutable tras la creación. |
password | Obligatorio (al crear), de solo escritura. Inmutable tras la creación (la sustitución es recreación). |
fromAddress | Formato de correo electrónico, 254 caracteres o menos, obligatorio. |
fromName | Opcional. |
Reglas sobre el comportamiento y los permisos:
- La información de conexión es inmutable. Lo único que se puede cambiar con
Update(PUT) sonname,fromAddressyfromName. Para cambiarendpoint,usernameopassword, se crea uno nuevo y se elimina el anterior. - La modificación requiere la versión. En la petición de
Updatese envía el valor actual desys.versionen la cabeceraX-Weegloo-Version. Si el valor no es el más reciente, se rechaza por conflicto de versión. En ese caso se vuelve a consultar el recurso y se reintenta con elsys.versionmás reciente. - La contraseña no se puede volver a leer. Como no aparece en ninguna consulta ni listado, si se pierde se gestiona recreando, no restableciendo.
- Los servidores SMTP que se pueden usar dependen del plan. Los hosts de proveedor que se ofrecen como preset (Gmail, Naver, Resend, Brevo) se pueden registrar también en los planes más bajos. Un host arbitrario (autoalojado) que no esté en los presets solo se puede usar si hay un método de pago registrado. Para la política por plan, consulta Planes de precios.
API
La URL base de todos los endpoints siguientes es https://cma.weegloo.com/v1, y se necesita un token Bearer que autentica CMA en la cabecera Authorization. La modificación (PUT) requiere además la cabecera X-Weegloo-Version.
Documentos relacionados
- Script: con el statement
EmailSendse envía correo a través de este Email Account. - SpaceRole: el rol que define los permisos de acceso a los recursos de este Space.
- Planes de precios: la política de uso de los hosts de proveedor preset y de los hosts SMTP arbitrarios (autoalojados).
