# Reintentar y reenviar emails

> Vuelve a enviar como email nuevo un email rebotado, fallido, bloqueado o retenido, o reenvía un email enviado a otro destinatario, desde el panel o con la API.

Reintentar vuelve a enviar un email con el mismo contenido después de que haya rebotado, fallado, quedado bloqueado o retenido. Reenviar envía a otra persona una copia de un email que ya has enviado, por ejemplo a un compañero de soporte o a un cliente que ha perdido el original. Ambas acciones crean un email nuevo con su propio ID y dejan el original sin cambios.

## Antes de empezar

- En la API, ambos endpoints funcionan con claves **Full Access** y **Sending Only**.
- Ambas acciones se cobran como envíos nuevos, así que necesitas [créditos](/es/docs/billing/credits/) suficientes.
- Ambas necesitan el contenido del mensaje original. Emailit lo elimina cuando termina tu periodo de [retención de datos](/es/docs/data-retention/) del contenido de los mensajes:

| | Pay as you go | Pro | Business | Custom |
| --- | --- | --- | --- | --- |
| Retención del contenido de los mensajes | 7 días | 30 días | 30 días | Flexible |

## Reintentar un email

Un email se puede reintentar cuando se cumplen todas estas condiciones:

| Requisito | Detalles |
| --- | --- |
| Estado | `bounced`, `failed`, `suppressed` o `held` |
| Antigüedad | Creado hace menos de 30 días |
| Contenido | La retención de datos no ha eliminado el contenido del mensaje |
| Dominio de envío | El dominio de envío original sigue existiendo en el espacio de trabajo |

Un reintento crea un **email nuevo** con un ID `em_` nuevo y un Message-ID nuevo. Reutiliza el mensaje en bruto, el destinatario, los metadatos y la configuración de seguimiento del original, y pasa por el proceso de entrega normal. Cuesta 1 crédito, o 2 créditos si el original era un email de campaña. Un espacio de trabajo en modo sandbox solo puede reintentar emails dirigidos a miembros del espacio de trabajo.

Corrige la causa antes de reintentar; si no, el email nuevo acabará con el mismo estado:

- **Bloqueado:** primero quita la dirección de las [direcciones bloqueadas](/es/docs/suppressions/manage/).
- **Retenido por falta de créditos:** recarga tus [créditos](/es/docs/billing/credits/).
- **Retenido porque el dominio estaba pausado:** resuelve el problema de [salud de envío](/es/docs/deliverability/sending-health/).
- **Retenido por la puntuación de spam:** un reintento envía el mismo contenido y es probable que vuelva a retenerse. Cambia el contenido y envía un email nuevo. Consulta [Comprobaciones de spam](/es/docs/deliverability/spam-checks/).
- **Rebotado:** comprueba el motivo del rebote en la página de detalles del email. Un buzón que no existe volverá a rebotar. Si Emailit añadió la dirección a tus direcciones bloqueadas después del rebote, quítala primero.

**Panel**

  1. Ve a **Email API → Emails** y abre el email.
  2. Selecciona **Retry** en la parte superior de la página. El panel lo muestra en los emails retenidos y bloqueados; los emails rebotados y fallidos se reintentan con la API.
  3. Vuelve a seleccionar **Retry** en el cuadro de diálogo **Retry Email** para confirmar. El email nuevo aparece en la lista con su propio ID.

**API**

  Llama a [Reintentar un email](/es/docs/api-reference/emails/retry/) (`POST /emails/{id}/retry`) con el ID del email original. No hay cuerpo de petición.

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/emails/em_33VtK8mRq1xZp7LwN4cY2bHsDfa/retry \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const retried = await emailit.emails.retry('em_33VtK8mRq1xZp7LwN4cY2bHsDfa');
```

**Python**

```python
retried = client.emails.retry("em_33VtK8mRq1xZp7LwN4cY2bHsDfa")
```

**PHP**

```php
$retried = $emailit->emails()->retry('em_33VtK8mRq1xZp7LwN4cY2bHsDfa');
```

```json
{
  "object": "email",
  "id": "em_33Vu2LqPz8aKd4WnX6cR1tYbHgs",
  "original_id": "em_33VtK8mRq1xZp7LwN4cY2bHsDfa",
  "token": "33Vu2LqQ7mFt3XcV9bNp5KsRwEz",
  "message_id": "<33Vu2LqQ7mFt3XcV9bNp5KsRwEz@acme.com>",
  "from": "Acme <orders@acme.com>",
  "to": "ada@example.com",
  "subject": "Receipt for order 1042",
  "status": "accepted",
  "created_at": "2026-10-01T11:15:03.552918Z",
  "message": "Email has been queued for retry"
}
```

| Error | Causa |
| --- | --- |
| `404 Email not found` | El ID no existe en este espacio de trabajo. |
| `422 Cannot retry email` | El estado no admite reintentos, el email tiene más de 30 días, su contenido se ha eliminado o su dominio de envío se ha eliminado. El `message` indica cuál de estos casos es. |
| `402 Insufficient credits` | El espacio de trabajo no puede pagar el reintento. |
| `403 Workspace not verified` | El espacio de trabajo está en modo sandbox y el destinatario no es miembro del espacio de trabajo. |

## Reenviar un email

Reenviar envía un email saliente que ya has enviado a un destinatario nuevo. Los emails entrantes no se pueden reenviar.

Por defecto, el reenvío es un nuevo envío sin más: el destinatario recibe el asunto, el cuerpo y los adjuntos originales como si el email se le hubiera enviado a él. Usa `include_headers` para enviar en su lugar un reenvío clásico, con un bloque «Forwarded message» (From, Date, Subject y To originales) y un comentario opcional encima. En ese caso, el asunto empieza por `Fwd:`.

- `to` (string | string[], obligatorio): Los destinatarios nuevos, en los mismos formatos que `to` en un envío.
- `include_headers` (boolean): Añade el bloque del mensaje reenviado, el comentario opcional y el prefijo `Fwd:` en el asunto.
- `comment` (string): Una nota en texto plano que se muestra encima del mensaje reenviado cuando `include_headers` es `true`. También se acepta `body` como alias.
- `html` (string): Una nota en HTML que se usa en lugar del `comment` escapado en la parte HTML, cuando `include_headers` es `true`.
- `text` (string): Una nota en texto plano que sustituye a `comment` en la parte de texto, cuando `include_headers` es `true`.
- `from` (string): Una dirección distinta desde la que enviar. Por defecto, la dirección From original. Debe ser de un dominio de envío verificado.
- `subject` (string): Un asunto que sustituye al original. Por defecto, el asunto original, o `Fwd:` seguido del asunto original con `include_headers`.

Un reenvío es un envío nuevo, así que sigue las mismas reglas que `POST /emails`: se aplican los créditos por destinatario, los límites de velocidad de envío, las comprobaciones del dominio From y la cabecera [`Idempotency-Key`](/es/docs/email-api/idempotency/). El seguimiento sigue la configuración del dominio de envío. Las cabeceras personalizadas y los metadatos del original no se copian, y los adjuntos solo se conservan si su tipo de archivo está [permitido](/es/docs/email-api/attachments/#allowed-file-types).

Cada espacio de trabajo puede hacer **3 peticiones de reenvío por hora**, contando juntos los reenvíos desde el panel y desde la API. Por encima del límite, la API devuelve `429` con `too_many_requests`.

**Panel**

  1. Ve a **Email API → Emails** y abre el email.
  2. Selecciona **Forward**.
  3. Introduce el destinatario en **To**.
  4. Opcional: marca **Add forwarded headers and a comment** y escribe un **Comment**.
  5. Selecciona **Forward**. El email nuevo aparece en la lista con su propio ID.

**API**

  Llama a [Reenviar un email](/es/docs/api-reference/emails/forward/) (`POST /emails/{id}/forward`).

**cURL**

```bash
curl https://api.emailit.com/v2/emails/em_33VtK8mRq1xZp7LwN4cY2bHsDfa/forward \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "support@acme.com",
    "include_headers": true,
    "comment": "Customer says this receipt never arrived. Can you check?"
  }'
```

**Node.js**

```javascript
const forwarded = await emailit.emails.forward('em_33VtK8mRq1xZp7LwN4cY2bHsDfa', {
  to: 'support@acme.com',
  include_headers: true,
  comment: 'Customer says this receipt never arrived. Can you check?',
});
```

**Python**

```python
forwarded = client.emails.forward("em_33VtK8mRq1xZp7LwN4cY2bHsDfa", {
    "to": "support@acme.com",
    "include_headers": True,
    "comment": "Customer says this receipt never arrived. Can you check?",
})
```

**PHP**

```php
$forwarded = $emailit->emails()->forward('em_33VtK8mRq1xZp7LwN4cY2bHsDfa', [
    'to' => 'support@acme.com',
    'include_headers' => true,
    'comment' => 'Customer says this receipt never arrived. Can you check?',
]);
```

La respuesta es igual que la [respuesta de un envío](/es/docs/email-api/send-email/#read-the-response), más `original_id` y el mensaje «Email has been queued for forwarding». El reenvío falla con `422 Cannot forward email` si el original es un email entrante o si su contenido se ha eliminado.

## Ver también

- [Reintentar un email](/es/docs/api-reference/emails/retry/)
- [Reenviar un email](/es/docs/api-reference/emails/forward/)
- [Estados de los emails](/es/docs/logs/email-statuses/)
- [Detalles del email](/es/docs/logs/email-details/)

---
Fuente: https://emailit.com/es/docs/email-api/retry-and-forward/
