# Cabeçalhos e respostas SMTP

> Quais cabeçalhos o Emailit adiciona, reescreve ou remove nos e-mails enviados por SMTP, como ler os IDs dos e-mails na resposta 250 e como adicionar você mesmo o List-Unsubscribe.

O Emailit repassa a mensagem MIME que você envia por SMTP praticamente como ela está, mas altera alguns cabeçalhos para que a mensagem seja autenticada e possa ser rastreada. Esta página lista essas alterações, explica a resposta `250` que traz os novos IDs dos e-mails e apresenta os cabeçalhos que você precisa adicionar por conta própria.

## Cabeçalhos que o Emailit adiciona ou reescreve

| Cabeçalho | O que o Emailit faz |
| --- | --- |
| `Received` | Adiciona cabeçalhos de rastreamento para o relay e para o servidor de e-mail do Emailit que entrega a mensagem. |
| `Message-ID` | Substitui o seu por `<token@your-domain>`, em que o domínio é o do seu endereço From. A cópia de cada destinatário recebe o seu próprio Message-ID. |
| `Date` | É definido quando o Emailit processa a mensagem para entrega pela primeira vez. |
| `Subject` | É reescrito a partir do assunto decodificado, e os caracteres não ASCII são codificados de novo. |
| `Return-Path` | Define um endereço de bounce no seu subdomínio de return path, `emailit.<your-domain>`. O mesmo endereço é usado como remetente do envelope, então o SPF passa para o seu domínio. |
| `X-Emailit-ID` | Adiciona o token do e-mail. |
| `Feedback-ID` | Adiciona um identificador que os provedores de e-mail usam nos relatórios de reclamação. |
| `DKIM-Signature` | Assina a mensagem com a chave DKIM do seu domínio (seletor `emailit` por padrão). Uma segunda assinatura para `emailitmail.com` pode ser adicionada para os feedback loops de reclamação. |

A assinatura DKIM cobre os cabeçalhos `From`, `To`, `Cc`, `Subject`, `Date`, `Message-ID`, `Reply-To`, MIME e `List-*`, entre outros. Não altere uma mensagem depois que o Emailit a assinou, por exemplo com uma lista de discussão que reescreve o assunto, ou a assinatura falha.

## Cabeçalhos que o Emailit remove

| Cabeçalho | Quando |
| --- | --- |
| `Bcc` | Sempre, para que os destinatários em Bcc continuem ocultos. |
| `Reply-To` | Quando indica o mesmo endereço que `From`. Alguns filtros de spam penalizam um Reply-To redundante. |
| `Content-Disposition` | No nível superior da mensagem. As partes de anexo mantêm o delas. |

Todo o resto, incluindo os seus próprios cabeçalhos `X-`, é entregue sem alterações.

## Os cabeçalhos de controle não são lidos pelo SMTP

> **Use a API para controle por e-mail:** O SMTP relay não lê nenhum cabeçalho `X-Emailit-*`. Não é possível definir o rastreamento, metadados, um template ou um horário de envio com cabeçalhos. O rastreamento segue as configurações **Track loads** e **Track clicks** do domínio de envio em **Email API → Domains**. Para controle por e-mail, use a [API de e-mail](/pt/docs/email-api/send-email/).

Não inclua um cabeçalho `X-Emailit-ID` nas mensagens que você envia. O Emailit o usa para reconhecer as mensagens que já processou, e uma mensagem que tem esse cabeçalho pula a reescrita de cabeçalhos e a assinatura DKIM descritas acima.

## A resposta 250

Quando o relay aceita uma mensagem, a resposta dele ao fim do `DATA` lista os IDs de e-mail do Emailit que foram criados, um por destinatário:

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

- `2.0.0` é o código de status estendido de sucesso.
- Cada ID `em_` é o mesmo ID que a API, o painel e os webhooks usam para o e-mail daquele destinatário.
- A linha de resposta tem um limite de tamanho. Se todos os IDs não couberem, o que acontece a partir de cerca de 15 destinatários, a resposta contém apenas o primeiro ID. Encontre os outros em **Email API → Emails** ou nos eventos de webhook.

A maioria das bibliotecas expõe a resposta. No Nodemailer, ela fica em `info.response`. No PHPMailer, chame `$mail->getSMTPInstance()->getLastReply()` depois de `send()`. Guarde o ID junto com o seu próprio registro, para associar os [eventos de webhook](/pt/docs/webhooks/event-types/) ou consultar o e-mail depois com [Obter um e-mail](/pt/docs/api-reference/emails/get/).

## Adicionar o List-Unsubscribe você mesmo

O Emailit adiciona os cabeçalhos `List-Unsubscribe` apenas aos e-mails de [campanhas](/pt/docs/campaigns/). Se você envia newsletters ou outros e-mails em massa por SMTP, adicione você mesmo os dois cabeçalhos à mensagem:

```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
```

A URL `https` precisa aceitar um `POST` com o corpo `List-Unsubscribe=One-Click` e descadastrar a pessoa sem uma etapa de confirmação (RFC 8058). O Emailit inclui os dois cabeçalhos na assinatura DKIM, o que o Gmail e o Yahoo exigem para o descadastro em um clique.

**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');
```

## Veja também

- [Configurações SMTP](/pt/docs/smtp/settings/)
- [Cabeçalhos e metadados](/pt/docs/email-api/headers-and-metadata/) para envios pela API
- [Dicionário de cabeçalhos de e-mail](/pt/docs/dictionary/email-headers/)
- [Rastreamento de aberturas e cliques](/pt/docs/tracking/)

---
Fonte: https://emailit.com/pt/docs/smtp/headers/
