Formato .eml + incidencias (FR-004/005/010/012/016)

Nombre (Q5, determinista, jamás sobrescrito)

recordatorio-<citaId>-AAAAMMDD-HHMM.eml donde AAAAMMDD-HHMM = inicio del tramo en Europe/Madrid (fechaLocalEnMadrid sin guiones + horaLocalEnMadrid con :→``). Ejemplo: cita 30/09/2026 10:00 → recordatorio-<uuid>-20260930-1000.eml.

Excepción documentada (FR-008 + FR-010 + SC-008): si el mismo tramo se reenvía por cambio de servicio/email (misma AAAAMMDD-HHMM pero distinta configuración), el nombre Q5 colisionaría; el segundo envío usa sufijo -2, -3… (…-HHMM-2.eml) para que cada envío conserve su propio fichero sin sobrescribir el anterior. El primer envío siempre lleva el nombre Q5 exacto.

Cabeceras mínimas (texto plano, revisable con editor)

To: <email del paciente>
Subject: Recordatorio: tu cita en <clinica> el <DD/MM/AAAA> a las <HH:MM>
Date: <ejecucion en formato RFC2822 UTC>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Cuerpo (es-ES, sin jerga, sin SMS/WhatsApp)

Hola, <paciente>:

Te recordamos tu cita en <clinica>:
  Cuándo: <DD/MM/AAAA, HH:MM–HH:MM>
  Profesional: <nombre>
  Servicio: <nombre> (<precio 40,00 €>)
  Teléfono de la clínica: <telefono>

Si no vas a poder venir, puedes cancelar aquí:
<APP_URL>/cancelar/<citaId>?token=<token>
Por favor, no reenvíes este enlace: quien lo reciba podría cancelar tu cita.
Si faltan menos de 24 horas, el enlace mostrará «fuera de plazo» y tendrás que llamar a la clínica al <telefono>.

Precio: formatearEuros(precioCongeladoCentimos) de la cita (001 FR-006/S-05), nunca la tarifa vigente.

Incidencias (INCIDENCIAS-AAAA-MM-DD.txt, append-only)

<ejecucion-ISO> | <citaId> | sin-email
<ejecucion-ISO> | <citaId> | email-invalido
<ejecucion-ISO> | <citaId> | duplicado

Sin .eml, sin reintento, sin tocar la cita (FR-016).