# Códigos de error: Correo (SES): buzones, recepción y envío

> Buzones de correo por entidad sobre SES: alta de dominio y buzón, recepción (SNS → S3), rebotes y quejas, y envío desde el chat.

**Cómo se detecta (toda la familia):** Respuesta (`code`). Rebotes y quejas quedan en las supresiones del buzón y en el mensaje. Render: `mailbox_onboarding_failed`, líneas de `ses-ingress`.

**Qué hacer (toda la familia):** Dominio sin verificar o buzón dado de baja: revisar el alta en Configuración → Canales. Destinatario suprimido: quitar la supresión solo si el cliente lo pide. Límite diario: esperar al día siguiente.

Lo que un código no dice lo hereda de la familia.

## `bad_signature`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Un aviso de SES/SNS llegó con una firma que no cuadra: se descarta.

## `cert_unavailable`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** No se pudo bajar el certificado de SNS para verificar un aviso de SES: se descarta y SNS reintenta.

## `EMAIL_ADDRESS_OUTSIDE_DOMAIN`

- **Tipo:** HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** La dirección del buzón no es del dominio de la entidad.

## `EMAIL_ATTACHMENT_EMPTY`

- **Tipo:** HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** El adjunto que se intentó subir al correo vino vacío (0 bytes); no se guarda nada.

## `EMAIL_ATTACHMENT_FILE_TOO_LARGE`

- **Tipo:** detalle, HTTP · **HTTP:** 413 · **Estado:** vigente
- **Qué significa:** Un adjunto de correo pesa más de 10 MB (tope por archivo; el total por correo es 20 MB). Se niega al subirlo, antes de guardar nada.
- **Qué hacer:** Comprimir el archivo o mandarlo en varios correos.

## `EMAIL_ATTACHMENT_TYPE_NOT_ALLOWED`

- **Tipo:** detalle, HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** Ese tipo de archivo no se adjunta a un correo. Se aceptan imágenes, PDF, Word, Excel, CSV, PowerPoint, texto y zip (lista blanca por extensión y tipo); un programa o script (`.exe`, `.js`, `.sh`, `.apk`…) se niega aunque cambie de nombre.
- **Causa típica:** Al subir el adjunto (`POST interactions/messages/email/attachments`) o al enviar un correo que lo declara (`attachments[].filename`).
- **Qué hacer:** Mandar el archivo en uno de los formatos aceptados (por ejemplo, exportarlo a PDF o comprimirlo en zip).

## `EMAIL_BODY_REQUIRED`

- **Tipo:** HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** El correo necesita un mensaje.

## `EMAIL_BOUNCE`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Rebote permanente de un correo enviado: la dirección no existe o no acepta correo. Se suprime para no volver a escribirle.

## `EMAIL_CHANNEL_TYPE_MISSING`

- **Tipo:** HTTP · **HTTP:** 503 · **Estado:** vigente
- **Qué significa:** No existe el tipo de canal email.

## `EMAIL_COMPLAINT`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El destinatario marcó el correo como spam. Se suprime para no volver a escribirle.

## `EMAIL_COPY_ADDRESS_INVALID`

- **Tipo:** detalle, HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** Una dirección escrita en CC o CCO no es un correo válido (o está vacía). Se niega el correo entero: nunca se descarta una copia en silencio.

## `EMAIL_COPY_LIMIT_EXCEEDED`

- **Tipo:** detalle, HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** Pasó el tope de copias: hasta 10 direcciones en CC y 10 en CCO por correo (contadas sin repetidas ni el destinatario).

## `EMAIL_DAILY_LIMIT`

- **Tipo:** interno, detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El buzón llegó a su tope diario de envíos.

## `EMAIL_DOMAIN_NOT_FOUND`

- **Tipo:** HTTP · **HTTP:** 404 · **Estado:** vigente
- **Qué significa:** Dominio no encontrado.

## `EMAIL_DOMAIN_NOT_VERIFIED`

- **Tipo:** interno, detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El dominio del buzón no está verificado (DKIM).

## `EMAIL_DOMAIN_TAKEN`

- **Tipo:** HTTP · **HTTP:** 409 · **Estado:** vigente
- **Qué significa:** El dominio ya lo usa otra entidad.

## `EMAIL_MAILBOX_DISCONNECTED`

- **Tipo:** interno, detalle, HTTP · **HTTP:** 409 · **Estado:** vigente
- **Qué significa:** El buzón está dado de baja.

## `EMAIL_MAILBOX_EXISTS`

- **Tipo:** HTTP · **HTTP:** 409 · **Estado:** vigente
- **Qué significa:** Ese buzón ya existe.

## `EMAIL_MAILBOX_FORBIDDEN`

- **Tipo:** HTTP · **HTTP:** 403 · **Estado:** vigente
- **Qué significa:** No tiene asignado el buzón que recibió este correo.

## `EMAIL_MAILBOX_NOT_CREATED`

- **Tipo:** HTTP · **HTTP:** 503 · **Estado:** vigente
- **Qué significa:** No se pudo crear el buzón; no quedó nada a medias.

## `EMAIL_MAILBOX_NOT_FOUND`

- **Tipo:** interno, detalle, HTTP · **HTTP:** 404 · **Estado:** vigente
- **Qué significa:** Buzón no encontrado.

## `EMAIL_MAILBOX_REQUIRED`

- **Tipo:** HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** Elija desde qué buzón escribir.

## `EMAIL_NO_MAILBOX`

- **Tipo:** HTTP · **HTTP:** 409 · **Estado:** vigente
- **Qué significa:** No tiene un buzón de correo para escribir.

## `EMAIL_ONBOARDING_AUDIT_UNAVAILABLE`

- **Tipo:** HTTP · **HTTP:** 503 · **Estado:** vigente
- **Qué significa:** No se pudo registrar la decisión; no se hace nada sin auditoría.

## `EMAIL_ONBOARDING_INCOMPLETE`

- **Tipo:** HTTP · **HTTP:** 503 · **Estado:** vigente
- **Qué significa:** Falta configuración del servidor para el alta de correo; el mensaje y `problems` dicen qué (solo nombres de variables).

## `EMAIL_RECIPIENT_INVALID`

- **Tipo:** interno, detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Hay un destinatario inválido.

## `EMAIL_RECIPIENT_MISSING`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El contacto no tiene correo electrónico.

## `EMAIL_RECIPIENT_NOT_ALLOWED`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El destinatario elegido no es uno de los correos del chat.

## `EMAIL_RECIPIENT_REQUIRED`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El contacto tiene varios correos: hay que elegir a cuál escribir.

## `EMAIL_REJECT`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** SES rechazó un correo que llegó (virus o spam): no se entrega al chat.

## `EMAIL_REPLY_TARGET_NOT_FOUND`

- **Tipo:** HTTP · **HTTP:** 404 · **Estado:** vigente
- **Qué significa:** Ese correo no es de este chat.

## `EMAIL_SEND_FAILED`

- **Tipo:** HTTP · **HTTP:** 409, 429, 502 · **Estado:** vigente
- **Qué significa:** El correo no salió; si SES dijo por qué, viaja su `code` concreto en lugar de este.

## `EMAIL_SEND_UNAVAILABLE`

- **Tipo:** HTTP · **HTTP:** 409 · **Estado:** vigente
- **Qué significa:** El envío de correo no está disponible en este proceso.

## `EMAIL_SENDING_PAUSED`

- **Tipo:** interno, detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** SES pausó el envío de la entidad por reputación.

## `EMAIL_SUBJECT_REQUIRED`

- **Tipo:** HTTP · **HTTP:** 400 · **Estado:** vigente
- **Qué significa:** Un correo nuevo necesita asunto.

## `EMAIL_SUPPRESSION_AUDIT_UNAVAILABLE`

- **Tipo:** HTTP · **HTTP:** 503 · **Estado:** vigente
- **Qué significa:** No se pudo registrar la decisión; no se quita sin auditoría.

## `invalid_envelope`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Un aviso de SES/SNS no tiene la forma esperada: se descarta.

## `topic_not_allowed`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Un aviso de SNS viene de un tópico que no es el configurado: se descarta.

## `untrusted_cert_url`

- **Tipo:** detalle · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El certificado de un aviso de SNS no viene de un dominio de AWS: se descarta.
