# En-têtes et réponses SMTP

> Les en-têtes qu’Emailit ajoute, réécrit ou supprime sur les e-mails SMTP, comment lire les ID des e-mails dans la réponse 250 et comment ajouter vous-même List-Unsubscribe.

Emailit relaie pour l’essentiel tel quel le message MIME que vous soumettez via SMTP, mais il modifie quelques en-têtes pour que le message soit authentifié et puisse être suivi. Cette page liste ces modifications, explique la réponse `250` qui contient les nouveaux ID des e-mails et présente les en-têtes que vous devez ajouter vous-même.

## En-têtes ajoutés ou réécrits par Emailit

| En-tête | Ce que fait Emailit |
| --- | --- |
| `Received` | Ajoute des en-têtes de traçage pour le relais et pour le serveur de messagerie Emailit qui livre le message. |
| `Message-ID` | Remplace le vôtre par `<token@your-domain>`, le domaine étant celui de votre adresse d’expéditeur. La copie de chaque destinataire reçoit son propre Message-ID. |
| `Date` | Le définit lorsqu’Emailit traite le message pour la première fois en vue de sa livraison. |
| `Subject` | Le réécrit à partir de l’objet décodé et réencode les caractères non ASCII. |
| `Return-Path` | Définit une adresse de rebond sur votre sous-domaine de return-path, `emailit.<your-domain>`. La même adresse sert d’expéditeur d’enveloppe : SPF réussit donc pour votre domaine. |
| `X-Emailit-ID` | Ajoute le jeton de l’e-mail. |
| `Feedback-ID` | Ajoute un identifiant que les fournisseurs de messagerie utilisent dans les rapports de plainte. |
| `DKIM-Signature` | Signe le message avec la clé DKIM de votre domaine (sélecteur `emailit` par défaut). Une seconde signature pour `emailitmail.com` peut être ajoutée pour les boucles de rétroaction (feedback loops) des plaintes. |

La signature DKIM couvre notamment les en-têtes `From`, `To`, `Cc`, `Subject`, `Date`, `Message-ID`, `Reply-To`, MIME et `List-*`. Ne modifiez pas un message après sa signature par Emailit, par exemple avec une liste de diffusion qui réécrit l’objet, sinon la signature échoue.

## En-têtes supprimés par Emailit

| En-tête | Quand |
| --- | --- |
| `Bcc` | Toujours, pour que les destinataires en copie cachée restent masqués. |
| `Reply-To` | Lorsqu’il désigne la même adresse que `From`. Certains filtres anti-spam pénalisent un Reply-To redondant. |
| `Content-Disposition` | Au niveau supérieur du message. Les parties contenant des pièces jointes conservent le leur. |

Tout le reste, y compris vos propres en-têtes `X-`, est livré sans modification.

## Les en-têtes de contrôle ne sont pas lus via SMTP

> **Utilisez l’API pour un contrôle e-mail par e-mail:** Le relais SMTP ne lit aucun en-tête `X-Emailit-*`. Vous ne pouvez définir ni le suivi, ni des métadonnées, ni un modèle, ni une heure d’envoi avec des en-têtes. Le suivi dépend des paramètres **Track loads** et **Track clicks** du domaine d’envoi dans **Email API → Domains**. Pour un contrôle e-mail par e-mail, utilisez l’[API e-mail](/fr/docs/email-api/send-email/).

N’incluez pas d’en-tête `X-Emailit-ID` dans les messages que vous soumettez. Emailit s’en sert pour reconnaître les messages qu’il a déjà traités, et un message qui en contient un échappe à la réécriture des en-têtes et à la signature DKIM décrites ci-dessus.

## La réponse 250

Quand le relais accepte un message, sa réponse à la fin de `DATA` liste les ID d’e-mails Emailit créés, un par destinataire :

```text
250 2.0.0 OK: queued as em_33VtK8mRq1xZp7LwN4cY2bHsDfa, em_33VtK8nB5rTq0YxW3mJk9PdLsUe
```

- `2.0.0` est le code de statut étendu de succès.
- Chaque ID `em_` est le même ID que celui utilisé par l’API, le tableau de bord et les webhooks pour l’e-mail de ce destinataire.
- La ligne de réponse a une longueur limitée. Si tous les ID ne tiennent pas, ce qui arrive vers 15 destinataires, la réponse ne contient que le premier ID. Retrouvez les autres dans **Email API → Emails** ou dans les événements webhook.

La plupart des bibliothèques exposent la réponse. Dans Nodemailer, il s’agit de `info.response`. Dans PHPMailer, appelez `$mail->getSMTPInstance()->getLastReply()` après `send()`. Enregistrez l’ID à côté de votre propre enregistrement, pour rapprocher les [événements webhook](/fr/docs/webhooks/event-types/) ou retrouver l’e-mail plus tard avec [Récupérer un e-mail](/fr/docs/api-reference/emails/get/).

## Ajouter vous-même List-Unsubscribe

Emailit n’ajoute les en-têtes `List-Unsubscribe` qu’aux e-mails de [campagne](/fr/docs/campaigns/). Si vous envoyez des newsletters ou d’autres envois en masse via SMTP, ajoutez vous-même les deux en-têtes au message :

```text
List-Unsubscribe: <https://acme.com/unsubscribe?u=881&l=digest>, <mailto:unsubscribe@acme.com?subject=unsubscribe-881>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
```

L’URL `https` doit accepter une requête `POST` avec le corps `List-Unsubscribe=One-Click` et désinscrire la personne sans étape de confirmation (RFC 8058). Emailit inclut les deux en-têtes dans la signature DKIM, ce que Gmail et Yahoo exigent pour la désinscription en un clic.

**Node.js**

```javascript
await transporter.sendMail({
  from: 'Acme <news@acme.com>',
  to: 'ada@example.com',
  subject: 'Acme weekly digest',
  html: '<p>This week at Acme…</p>',
  headers: {
    'List-Unsubscribe': '<https://acme.com/unsubscribe?u=881&l=digest>',
    'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click',
  },
});
```

**Python**

```python
msg["List-Unsubscribe"] = "<https://acme.com/unsubscribe?u=881&l=digest>"
msg["List-Unsubscribe-Post"] = "List-Unsubscribe=One-Click"
```

**PHP**

```php
$mail->addCustomHeader('List-Unsubscribe', '<https://acme.com/unsubscribe?u=881&l=digest>');
$mail->addCustomHeader('List-Unsubscribe-Post', 'List-Unsubscribe=One-Click');
```

## Voir aussi

- [Paramètres SMTP](/fr/docs/smtp/settings/)
- [En-têtes et métadonnées](/fr/docs/email-api/headers-and-metadata/) pour les envois via l’API
- [Dictionnaire des en-têtes d’e-mail](/fr/docs/dictionary/email-headers/)
- [Suivi des ouvertures et des clics](/fr/docs/tracking/)

---
Source: https://emailit.com/fr/docs/smtp/headers/
