Saltar a contenido

Plantillas de correo

Una plantilla de correo es el cuerpo de un mensaje que envía el proceso: el texto detrás de la notificación de tarea o el archivo que un desencadenador nombra en PMFSendMessage().

Las plantillas pertenecen al proceso. Abre el proceso y elige Plantillas: puedes escribir una en el editor o subir un archivo de texto plano o HTML. El archivo que subes es el que usa el proceso; el editor es una comodidad, no una segunda copia.

Marcadores

El cuerpo es texto con variables del caso:

<p>Estimado @#reqUserName,</p>
<p>Su solicitud de permiso fue aprobada: @#daysReq días, del @#fromReq al @#toReq.</p>
  • @#Variable inserta el valor de la variable del caso con ese nombre.
  • Una variable que el caso no guardó se imprime como nada, no como @#Variable. Es la causa habitual de una plantilla que llega con una línea en blanco.
  • Un desencadenador puede pasar valores extra en el argumento emailTemplateVariables de PMFSendMessage(); se combinan sobre los datos del caso, así que también pueden sobrescribirlos.

El valor se inserta como texto. Si la variable contiene HTML, se escapa.

Repetir una grilla

Una grilla se imprime con un bloque que se repite por cada fila:

<table>
  <tr><th>Desde</th><th>Hasta</th><th>Días</th></tr>
  @>reqLeaveGrid
  <tr><td>@#detDateFrom</td><td>@#detDateTo</td><td>@#detNoDays</td></tr>
  @<reqLeaveGrid
</table>

Todo lo que está entre @>reqLeaveGrid y @<reqLeaveGrid se repite una vez por fila, con las columnas de esa fila en lugar de los marcadores. Un bloque que nunca se cierra se traga el resto del mensaje: el síntoma clásico de "mi correo se corta después de la tabla".

Las plantillas antiguas envuelven los marcadores en comentarios HTML (<!-- @>grid -->), que también funciona y mantiene los marcadores fuera de un cliente de texto plano. Cualquiera de las dos formas sirve; sé consistente dentro de una misma plantilla.

Imágenes

Una imagen de la plantilla debe ser alcanzable por el destinatario, no por el servidor:

<img src="https://docs.example.com/assets/logo.png" alt="Lurana">

Una ruta relativa o un archivo dentro del caso no viaja con el correo: el destinatario ve una imagen rota.

Enviarla

Desde un desencadenador:

PMFSendMessage(
    $_SESSION["APPLICATION"],
    "no-reply@example.com",
    @@NotifyTo,
    "",
    "",
    "Solicitud de permiso aprobada",
    "leave-approved.html",
    ["daysReq" => @%Days]
);
Posición Argumento
1 Id del caso
2 Dirección del remitente
3–5 Para, cc, cco — separados por comas para varios destinatarios
6 Asunto
7 Nombre del archivo de plantilla
8 Variables extra para la plantilla
9 Adjuntos (rutas completas)

PMFSendMessageToGroup() envía a un grupo en lugar de a una lista de direcciones. Las dos están en la referencia de funciones.

Adjuntarla al proceso

El desencadenador se ejecuta en el momento que elijas:

  • antes o después de un paso (formulario, documento de entrada o de salida);
  • antes de que el caso se asigne al usuario siguiente;
  • antes o después de que el caso se derive.

Con una condición, se ejecuta solo si la condición es verdadera: por ejemplo, enviar el mensaje solo cuando @@repFinalDec es 0, para que el solicitante reciba un correo y no uno por paso.

Antes de confiar en ella

  • Envíala a ti mismo con un caso real: los marcadores y los bloques de grilla se ven distinto con datos reales.
  • Mantén la plantilla pequeña. El HTML largo con CSS externo suele ser eliminado por los clientes de correo.
  • El mensaje queda en el historial de mensajes; el caso conserva la copia, así que "¿salió el correo?" tiene respuesta.

Relacionado