# Ritenta e inoltra le email

> Reinvia come nuova email un’email rimbalzata, non riuscita, soppressa o trattenuta, oppure inoltra un’email inviata a un altro destinatario, dal pannello o con l’API.

Un nuovo tentativo invia di nuovo un’email con lo stesso contenuto dopo che è rimbalzata, non è riuscita, è stata soppressa o trattenuta. L’inoltro invia una copia di un’email già inviata a un’altra persona, ad esempio un collega dell’assistenza o un cliente che ha perso l’originale. Entrambi creano una nuova email con il proprio ID e lasciano invariata quella originale.

## Prima di iniziare

- Nell’API, entrambi gli endpoint funzionano con le chiavi **Full Access** e **Sending Only**.
- Entrambi vengono addebitati come nuovi invii, quindi ti servono [crediti](/it/docs/billing/credits/) sufficienti.
- Entrambi richiedono il contenuto originale del messaggio. Emailit lo elimina quando termina il periodo di [conservazione dei dati](/it/docs/data-retention/) per il contenuto dei messaggi:

| | Pay as you go | Pro | Business | Custom |
| --- | --- | --- | --- | --- |
| Contenuto dei messaggi conservato | 7 giorni | 30 giorni | 30 giorni | Flessibile |

## Ritenta un’email

Un’email si può ritentare quando sono vere tutte queste condizioni:

| Requisito | Dettagli |
| --- | --- |
| Stato | `bounced`, `failed`, `suppressed` o `held` |
| Età | Creata da meno di 30 giorni |
| Contenuto | Il contenuto del messaggio non è stato eliminato dalla conservazione dei dati |
| Dominio di invio | Il dominio di invio originale esiste ancora nel workspace |

Un nuovo tentativo crea una **nuova email** con un nuovo ID `em_` e un nuovo Message-ID. Riusa il messaggio grezzo, il destinatario, i metadati e le impostazioni di tracciamento dell’originale, e passa per la normale pipeline di consegna. Costa 1 credito, oppure 2 crediti se l’originale era un’email di una campagna. Un workspace in modalità sandbox può ritentare solo le email indirizzate ai membri del workspace.

Risolvi la causa prima di ritentare, altrimenti la nuova email finisce con lo stesso stato:

- **Soppressa:** rimuovi prima l’indirizzo dalle [soppressioni](/it/docs/suppressions/manage/).
- **Trattenuta per crediti insufficienti:** ricarica i [crediti](/it/docs/billing/credits/).
- **Trattenuta perché il dominio era in pausa:** risolvi il problema di [salute degli invii](/it/docs/deliverability/sending-health/).
- **Trattenuta per il punteggio spam:** un nuovo tentativo invia lo stesso contenuto e probabilmente verrà trattenuto di nuovo. Modifica il contenuto e invia invece una nuova email. Vedi [Controlli antispam](/it/docs/deliverability/spam-checks/).
- **Rimbalzata:** controlla il motivo del bounce nella pagina di dettaglio dell’email. Una casella che non esiste rimbalzerà di nuovo. Se Emailit ha aggiunto l’indirizzo alle soppressioni dopo il bounce, rimuovilo prima.

**Pannello**

  1. Vai a **Email API → Emails** e apri l’email.
  2. Seleziona **Retry** in alto nella pagina. Il pannello lo mostra sulle email trattenute e soppresse; le email rimbalzate e non riuscite si ritentano con l’API.
  3. Seleziona di nuovo **Retry** nella finestra **Retry Email** per confermare. La nuova email compare nell’elenco con il proprio ID.

**API**

  Chiama [Ritenta un’email](/it/docs/api-reference/emails/retry/) (`POST /emails/{id}/retry`) con l’ID dell’email originale. Non c’è corpo della richiesta.

**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"
}
```

| Errore | Causa |
| --- | --- |
| `404 Email not found` | L’ID non esiste in questo workspace. |
| `422 Cannot retry email` | Lo stato non consente un nuovo tentativo, l’email ha più di 30 giorni, il suo contenuto è stato eliminato o il suo dominio di invio è stato eliminato. Il `message` indica quale caso. |
| `402 Insufficient credits` | Il workspace non può pagare il nuovo tentativo. |
| `403 Workspace not verified` | Il workspace è in modalità sandbox e il destinatario non è un membro del workspace. |

## Inoltra un’email

L’inoltro invia a un nuovo destinatario un’email in uscita che hai già inviato. Le email ricevute (in entrata) non si possono inoltrare.

Per impostazione predefinita, l’inoltro è un semplice reinvio: il destinatario riceve oggetto, corpo e allegati originali come se l’email fosse stata inviata a lui. Imposta `include_headers` per inviare invece un inoltro classico, con un blocco «Forwarded message» (From, Date, Subject e To originali) e un commento facoltativo sopra. In questo caso l’oggetto inizia con `Fwd:`.

- `to` (string | string[], obbligatorio): I nuovi destinatari, negli stessi formati di `to` in un invio.
- `include_headers` (boolean): Aggiunge il blocco del messaggio inoltrato, il commento facoltativo e il prefisso `Fwd:` nell’oggetto.
- `comment` (string): Una nota in testo semplice mostrata sopra il messaggio inoltrato quando `include_headers` è `true`. `body` è accettato come alias.
- `html` (string): Una nota HTML da usare nella parte HTML al posto del `comment` con escape, quando `include_headers` è `true`.
- `text` (string): Una nota in testo semplice che sostituisce `comment` nella parte di testo, quando `include_headers` è `true`.
- `from` (string): Invia da un indirizzo diverso. Il valore predefinito è l’indirizzo From originale. Deve trovarsi su un dominio di invio verificato.
- `subject` (string): Sostituisce l’oggetto. Il valore predefinito è l’oggetto originale, oppure `Fwd:` seguito dall’oggetto originale con `include_headers`.

Un inoltro è un nuovo invio, quindi segue le stesse regole di `POST /emails`: si applicano i crediti per destinatario, i limiti di frequenza di invio, i controlli sul dominio From e l’header [`Idempotency-Key`](/it/docs/email-api/idempotency/). Il tracciamento segue le impostazioni del dominio di invio. Gli header personalizzati e i metadati dell’originale non vengono copiati, e gli allegati vengono riportati solo se il loro tipo di file è [consentito](/it/docs/email-api/attachments/#allowed-file-types).

Ogni workspace può fare **3 richieste di inoltro all’ora**, contando insieme gli inoltri dal pannello e dall’API. Oltre il limite, l’API restituisce `429` con `too_many_requests`.

**Pannello**

  1. Vai a **Email API → Emails** e apri l’email.
  2. Seleziona **Forward**.
  3. Inserisci il destinatario in **To**.
  4. Facoltativo: spunta **Add forwarded headers and a comment** e scrivi un **Comment**.
  5. Seleziona **Forward**. La nuova email compare nell’elenco con il proprio ID.

**API**

  Chiama [Inoltra un’email](/it/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 risposta è la stessa di una [risposta di invio](/it/docs/email-api/send-email/#read-the-response), più `original_id` e il messaggio «Email has been queued for forwarding». L’inoltro non riesce con `422 Cannot forward email` se l’originale è un’email in entrata o il suo contenuto è stato eliminato.

## Vedi anche

- [Ritenta un’email](/it/docs/api-reference/emails/retry/)
- [Inoltra un’email](/it/docs/api-reference/emails/forward/)
- [Stati delle email](/it/docs/logs/email-statuses/)
- [Dettagli dell’email](/it/docs/logs/email-details/)

---
Fonte: https://emailit.com/it/docs/email-api/retry-and-forward/
