Personalización de la plantilla de correo electrónico externa de Discourse

:bookmark: Esta guía explica cómo personalizar y aplicar estilo a la plantilla HTML externa de todos los correos electrónicos enviados desde su sitio de Discourse.

:person_raising_hand: Nivel de usuario requerido: Administrador

Todos los correos electrónicos enviados desde su sitio se envuelven en una plantilla HTML que se puede personalizar.

Esta guía cubre:

  • Acceso a la sección de personalización de estilos de correo electrónico
  • Modificación de la plantilla HTML
  • Adición de CSS personalizado
  • Pruebas de plantillas de correo electrónico
  • Reversión de cambios
  • Un ejemplo de plantilla personalizada
  • Interacción con correos electrónicos de resumen (digest)
  • Cambio de fuentes de correo electrónico

Acceso a la personalización de estilos de correo electrónico

  1. Navegue a la página Apariencia (Appearance) en la sección Correo electrónico (Email) en la barra lateral de administración, o vaya directamente a /admin/customize/email_style.
  2. Verá un editor con dos pestañas: HTML y CSS, donde puede modificar la plantilla y los estilos de sus correos electrónicos.

Modificación de la plantilla HTML

El marcado predeterminado en la pestaña HTML contiene varios marcadores de posición (placeholders):

  • %{email_content}Requerido. Aquí es donde se insertará el contenido de cada correo electrónico. No debe eliminar este marcador de posición.
  • %{email_preview} — Inserta un texto de vista previa oculto para los clientes de correo electrónico que muestran un fragmento.
  • %{html_lang} — Inserta el código de idioma del sitio en la etiqueta <html>.
  • %{dark_mode_meta_tags} — Inserta etiquetas meta para la compatibilidad con el modo oscuro.
  • %{dark_mode_styles} — Inserta estilos CSS para la representación en modo oscuro.

Al crear una plantilla personalizada, debe incluir todos estos marcadores de posición para garantizar la compatibilidad total. Puede consultar la plantilla predeterminada (visible al abrir el editor por primera vez) como punto de partida.

Para obtener información sobre cómo personalizar el contenido que reemplaza el marcador de posición %{email_content}, consulte cómo personalizar plantillas de correo electrónico específicas.

Adición de CSS personalizado

Puede utilizar la pestaña CSS del editor de Estilo de Correo Electrónico (Email Style) para inyectar estilos en línea en su plantilla. Aquí hay un ejemplo:

  1. Agregue una clase CSS a un elemento HTML en la plantilla:

    <td> class="my-outer-td">
    </td>
    
  2. Cree una regla para la clase en la pestaña CSS:

    .my-outer-td {
      padding: 30px 0 30px 0;
    }
    

Discourse reemplazará la clase CSS con la regla CSS real antes de enviar el correo electrónico. Puede agregar las reglas CSS que desee aquí.

Pruebas de plantillas de correo electrónico

Es fundamental probar los cambios en la plantilla de correo electrónico en varios clientes de correo electrónico, ya que pueden interpretar el HTML de manera diferente. Utilice un servicio de prueba de correo electrónico para previsualizar cómo aparecerán sus correos electrónicos en diferentes clientes, especialmente para cambios significativos.

Reversión de cambios

Para revertir la personalización de su plantilla:

  1. Seleccione la pestaña que desea restablecer (HTML o CSS).
  2. Haga clic en el botón “Restablecer a predeterminado” (Reset to default) debajo del editor.

Esto restablecerá esa sección específica (HTML o CSS) a la plantilla de correo electrónico predeterminada de Discourse. Cada pestaña se restablece de forma independiente.

Ejemplo de plantilla personalizada

Aquí hay una plantilla de correo electrónico básica que limita el ancho de los correos electrónicos a un máximo de 600px y agrega un logotipo en la parte superior:

<!DOCTYPE DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  </head>
  <body style="margin: 0; padding: 0;">
    <!--[if mso]>
    <style type="text/css">
      body, table, td, th, h1, h2, h3 { font-family: Helvetica, Arial, sans-serif !important; }
    </style>
    <![endif]-->
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td style="padding: 10px 0 30px 0;">
          <!--[if gte mso 9]>
          <table width="600" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td>
          <![endif]-->
          <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;border-collapse: collapse;">
            <tr>
              <td style="padding: 20px 15px 20px 15px;">
                <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
                  <tr>
                    <td align="center">
                      <a href="https://forum.example.com">
                        <img src="https://your-site-logo-url" alt="Your site name" width="150" height="40" style="display: block;"/>
                      </a>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr>
              <td style="padding: 0 15px 0 15px;">
                <hr style="background-color: #ddd; height: 1px; border: 1px;"/>
              </td>
            </tr>
            <tr>
              <td style="padding: 20px 15px 30px 15px; color: #153643; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 20px;">
                %{email_content}
              </td>
            </tr>
          </table>
          <!--[if gte mso 9]>
              </td>
            </tr>
          </table>
          <![endif]-->
        </td>
      </tr>
    </table>
  </body>
</html>

Recuerde reemplazar los atributos src, alt e href de la imagen con la información específica de su sitio.

Así es como se ve en diferentes tamaños de pantalla

iPad Pro (10.5 inch) (iOS 13.1):

Gmail (Chrome):

iPhone 11 Pro Max (iOS 13.1):

Outlook 2019 (Windows 10)

Interacción con correos electrónicos de resumen (digest)

Si su plantilla personalizada agrega un logotipo a todos los correos electrónicos, tiene dos opciones para los correos electrónicos de resumen:

  1. Para utilizar el estilo predeterminado del correo electrónico de resumen:

    • Deshabilite la configuración del sitio apply custom styles to digest (aplicar estilos personalizados al resumen).
  2. Para mantener un estilo coherente en todos los correos electrónicos de notificación:

    • Elimine cualquier imagen configurada como la configuración del sitio digest logo (logotipo del resumen).
    • Agregue <span></span> a la personalización de texto en .../admin/customize/site_texts/user_notifications.digest.custom.html.header.

Cambio de fuentes de correo electrónico

Para cambiar las fuentes en sus correos electrónicos:

  1. Utilice fuentes seguras para la web (web-safe fonts) para máxima compatibilidad. Consulte CSS Font Stack para obtener una lista de fuentes disponibles en Windows y Mac.

  2. Agregue reglas CSS para las fuentes a su plantilla de correo electrónico de Discourse.

  3. Puede configurar fuentes directamente en elementos HTML, por ejemplo:

    <td style="font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 20px;">
      %{email_content}
    </td>
    

Tenga en cuenta que muchos clientes de correo electrónico no admiten fuentes web de servicios externos.

Recursos adicionales

Para obtener más información sobre la creación de correos electrónicos HTML, puede consultar esta guía completa sobre cómo crear una plantilla de correo electrónico HTML desde cero.

18 Me gusta

Thank @simon!

Could you be so kind to provide a full text of template? I would be happy to try it.

3 Me gusta

Thanks for pointing that out. It must have been a copy/paste error when I created the topic. I’ve added the full template to the post now.

3 Me gusta

How can we get the logo_url from Discourse in this template? is this possible?

1 me gusta

The easiest way might be to open your browser’s web inspector on your DIscourse site and copy the value of the logo’s src attribute into the template. You could also get the logo URL from the rails console by looking at the value of the url property that is returned for SiteSetting.logo

4 Me gusta

Ok cool, this is how I’m doing it right now, thanks!

2 Me gusta

Very nice. I think this should be the default. Most sites use a centered column 600px wide.

Seems like there should be a separate wrapper to edit for digest emails.

2 Me gusta

¿Cuál es la mejor manera de cambiar la fuente en los correos electrónicos? Gracias.

1 me gusta

Creo que el enfoque más seguro sería usar fuentes seguras para la web. Aquí hay una buena lista de las fuentes disponibles en computadoras Windows y Mac: https://www.cssfontstack.com/. Debería ser suficiente para agregar reglas CSS para las fuentes a su plantilla de correo electrónico de Discourse.

Podría intentar incorporar fuentes web de un servicio externo para sus correos electrónicos, pero debe tener en cuenta que muchos clientes de correo electrónico no admiten fuentes web. Aquí hay algunos detalles al respecto: The Ultimate Guide to Web Safe Fonts for Email Marketing | Litmus.

3 Me gusta

Gracias. Usaría una fuente segura para la web. En el ejemplo anterior hay una parte [if mso] pero no veo dónde se establece la fuente para los clientes que no son de Outlook.

1 me gusta

En la plantilla de ejemplo, las fuentes para clientes de correo electrónico que no son de Outlook se establecen con reglas CSS que se añaden directamente a los elementos HTML. Por ejemplo:

<td style="padding: 20px 15px 30px 15px; color: #153643; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 20px;">
    %{email_content}
</td>
2 Me gusta

Así es. Culparé a la estrecha pantalla del móvil y lo dejaré ahí :slight_smile:

2 Me gusta

¿Es posible personalizar la fuente del texto junto al avatar? Me refiero al texto de:

[Nombre real] [Nombre de usuario]
[Fecha]

He podido cambiar el resto del texto del correo electrónico, pero el texto de arriba tiene el siguiente estilo:

style=“color:#006699;; font-size:13px;font-family:‘lucida grande’,tahoma,verdana,arial,sans-serif;text-decoration:none;font-weight:bold; text-decoration: none; font-weight: bold; color: #006699;”

1 me gusta

¿Hay otras variables disponibles en la plantilla de correo electrónico?

Por ejemplo, sería útil tener %{year} para evitar la necesidad de actualizar los pies de página de los correos electrónicos. ¿Está disponible?

1 me gusta