Referencia
Cabeceras y respuestas SMTP
Qué cabeceras añade, reescribe o elimina Emailit en el correo enviado por SMTP, cómo leer los ID de los emails en la respuesta 250 y cómo añadir tú mismo List-Unsubscribe.
Emailit retransmite casi sin cambios el mensaje MIME que envías por SMTP, pero modifica algunas cabeceras para que el mensaje supere la autenticación y se pueda hacer su seguimiento. Esta página enumera esos cambios, explica la respuesta 250 que contiene los nuevos ID de los emails y describe las cabeceras que tienes que añadir tú.
Cabeceras que Emailit añade o reescribe
| Cabecera | Qué hace Emailit |
|---|---|
Received |
Añade cabeceras de traza para el relay y para el servidor de correo de Emailit que entrega el mensaje. |
Message-ID |
Sustituye el tuyo por <token@your-domain>, donde el dominio es el de tu dirección del remitente. La copia de cada destinatario recibe su propio Message-ID. |
Date |
La establece cuando Emailit procesa el mensaje por primera vez para entregarlo. |
Subject |
Lo reescribe a partir del asunto decodificado y vuelve a codificar los caracteres no ASCII. |
Return-Path |
Establece una dirección de rebote en tu subdominio de return-path, emailit.<your-domain>. Se usa la misma dirección como remitente del sobre, así que SPF se supera para tu dominio. |
X-Emailit-ID |
Añade el token del email. |
Feedback-ID |
Añade un identificador que los proveedores de correo usan en los informes de quejas. |
DKIM-Signature |
Firma el mensaje con la clave DKIM de tu dominio (selector emailit por defecto). Se puede añadir una segunda firma para emailitmail.com para los feedback loops de quejas. |
La firma DKIM cubre, entre otras, las cabeceras From, To, Cc, Subject, Date, Message-ID, Reply-To, MIME y List-*. No modifiques un mensaje después de que Emailit lo haya firmado, por ejemplo con una lista de correo que reescribe el asunto, o la firma fallará.
Cabeceras que Emailit elimina
| Cabecera | Cuándo |
|---|---|
Bcc |
Siempre, para que los destinatarios en CCO sigan ocultos. |
Reply-To |
Cuando indica la misma dirección que From. Algunos filtros de spam penalizan un Reply-To redundante. |
Content-Disposition |
En el nivel superior del mensaje. Las partes de los adjuntos conservan la suya. |
Todo lo demás, incluidas tus propias cabeceras X-, se entrega sin cambios.
Las cabeceras de control no se leen por SMTP
No incluyas una cabecera X-Emailit-ID en los mensajes que envíes. Emailit la usa para reconocer los mensajes que ya ha procesado, y un mensaje que la lleva se salta la reescritura de cabeceras y la firma DKIM descritas más arriba.
La respuesta 250
Cuando el relay acepta un mensaje, su respuesta al final de DATA enumera los ID de los emails de Emailit que ha creado, uno por destinatario:
250 2.0.0 OK: queued as em_33VtK8mRq1xZp7LwN4cY2bHsDfa, em_33VtK8nB5rTq0YxW3mJk9PdLsUe2.0.0es el código de estado ampliado de éxito.- Cada ID
em_es el mismo ID que usan la API, el panel y los webhooks para el email de ese destinatario. - La línea de respuesta tiene un límite de longitud. Si no caben todos los ID, lo que ocurre a partir de unos 15 destinatarios, la respuesta solo contiene el primer ID. Encuentra los demás en Email APIEmails o en los eventos de webhook.
La mayoría de las bibliotecas exponen la respuesta. En Nodemailer es info.response. En PHPMailer, llama a $mail->getSMTPInstance()->getLastReply() después de send(). Guarda el ID junto a tu propio registro, para poder asociar los eventos de webhook o buscar el email más adelante con Obtener un email.
Añadir tú mismo List-Unsubscribe
Emailit solo añade las cabeceras List-Unsubscribe a los emails de campaña. Si envías newsletters u otro correo masivo por SMTP, añade tú las dos cabeceras al mensaje:
List-Unsubscribe: <https://acme.com/unsubscribe?u=881&l=digest>, <mailto:unsubscribe@acme.com?subject=unsubscribe-881>
List-Unsubscribe-Post: List-Unsubscribe=One-ClickLa URL https debe aceptar un POST con el cuerpo List-Unsubscribe=One-Click y dar de baja a la persona sin un paso de confirmación (RFC 8058). Emailit incluye las dos cabeceras en la firma DKIM, algo que Gmail y Yahoo exigen para la baja con un clic.
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',
},
});msg["List-Unsubscribe"] = "<https://acme.com/unsubscribe?u=881&l=digest>"
msg["List-Unsubscribe-Post"] = "List-Unsubscribe=One-Click"$mail->addCustomHeader('List-Unsubscribe', '<https://acme.com/unsubscribe?u=881&l=digest>');
$mail->addCustomHeader('List-Unsubscribe-Post', 'List-Unsubscribe=One-Click');Ver también
- Configuración SMTP
- Cabeceras y metadatos para los envíos por API
- Cabeceras de email
- Seguimiento de aperturas y clics