Personalizando o template de e-mail externo do Discourse

:bookmark: Este guia explica como personalizar e estilizar o template HTML externo para todos os e-mails enviados do seu site Discourse.

:person_raising_hand: Nível de usuário necessário: Administrador

Todos os e-mails enviados do seu site são encapsulados em um template HTML que pode ser personalizado.

Este guia abrange:

  • Acessando a seção de personalização de estilo de e-mail
  • Modificando o template HTML
  • Adicionando CSS personalizado
  • Testando templates de e-mail
  • Revertendo alterações
  • Um exemplo de template personalizado
  • Interação com e-mails de resumo (digest)
  • Alterando fontes de e-mail

Acessando a personalização de estilo de e-mail

  1. Navegue até a página Aparência na seção E-mail na sua barra lateral de administração, ou acesse diretamente /admin/customize/email_style.
  2. Você verá um editor com duas abas — HTML e CSS — onde você pode modificar o template e os estilos para seus e-mails.

Modificando o template HTML

A marcação padrão na aba HTML contém vários placeholders:

  • %{email_content}Obrigatório. É aqui que o conteúdo de cada e-mail será inserido. Você não deve remover este placeholder.
  • %{email_preview} — Insere um texto de prévia oculto para clientes de e-mail que exibem um trecho.
  • %{html_lang} — Insere o código de idioma do site na tag <html>.
  • %{dark_mode_meta_tags} — Insere tags meta para suporte ao modo escuro.
  • %{dark_mode_styles} — Insere estilos CSS para renderização em modo escuro.

Ao criar um template personalizado, você deve incluir todos esses placeholders para garantir total compatibilidade. Você pode usar o template padrão (visível ao abrir o editor pela primeira vez) como ponto de partida.

Para obter informações sobre como personalizar o conteúdo que substitui o placeholder %{email_content}, consulte como personalizar templates de e-mail específicos.

Adicionando CSS personalizado

Você pode usar a aba CSS do editor de Estilo de E-mail para injetar estilos inline no seu template. Aqui está um exemplo:

  1. Adicione uma classe CSS a um elemento HTML no template:

    <td class="my-outer-td">
    </td>
    
  2. Crie uma regra para a classe na aba CSS:

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

O Discourse substituirá a classe CSS pela regra CSS real antes de enviar o e-mail. Você pode adicionar quaisquer regras CSS que desejar aqui.

Testando templates de e-mail

É crucial testar as alterações do seu template de e-mail em vários clientes de e-mail, pois eles podem interpretar o HTML de forma diferente. Use um serviço de teste de e-mail para pré-visualizar como seus e-mails aparecerão em diferentes clientes, especialmente para alterações significativas.

Revertendo alterações

Para reverter a personalização do seu template:

  1. Selecione a aba que você deseja redefinir (HTML ou CSS).
  2. Clique no botão “Redefinir para o padrão” abaixo do editor.

Isso redefinirá essa seção específica (HTML ou CSS) para o template de e-mail padrão do Discourse. Cada aba é redefinida independentemente.

Exemplo de template personalizado

Aqui está um template de e-mail básico que limita a largura dos e-mails a um máximo de 600px e adiciona um logotipo no topo:

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

Lembre-se de substituir os atributos src, alt e href da imagem pelas informações específicas do seu site.

Veja como fica em diferentes tamanhos de tela

iPad Pro (10.5 inch) (iOS 13.1):

Gmail (Chrome):

iPhone 11 Pro Max (iOS 13.1):

Outlook 2019 (Windows 10)

Interação com e-mails de resumo (digest)

Se o seu template personalizado adicionar um logotipo a todos os e-mails, você terá duas opções para e-mails de resumo:

  1. Para usar o estilo de e-mail de resumo padrão:

    • Desative a configuração do site apply custom styles to digest (aplicar estilos personalizados ao resumo).
  2. Para manter um estilo consistente em todos os e-mails de notificação:

    • Remova quaisquer imagens definidas como a configuração do site digest logo (logotipo do resumo).
    • Adicione <span></span> à personalização de texto em .../admin/customize/site_texts/user_notifications.digest.custom.html.header.

Alterando fontes de e-mail

Para alterar fontes em seus e-mails:

  1. Use fontes seguras para web para máxima compatibilidade. Consulte CSS Font Stack para uma lista de fontes disponíveis no Windows e Mac.

  2. Adicione regras CSS para as fontes ao seu template de e-mail do Discourse.

  3. Você pode definir fontes diretamente em elementos HTML, por exemplo:

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

Observe que fontes da web de serviços externos não são suportadas pela maioria dos clientes de e-mail.

Recursos adicionais

Para mais informações sobre a criação de e-mails HTML, você pode consultar este guia abrangente sobre como construir um template de e-mail HTML do zero.

18 curtidas

Thank @simon!

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

3 curtidas

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 curtidas

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

1 curtida

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 curtidas

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

2 curtidas

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 curtidas

Qual é a melhor maneira de alterar a fonte nos e-mails? Obrigado.

1 curtida

Acho que a abordagem mais segura seria usar fontes seguras para a web. Uma boa lista de quais fontes estão disponíveis em computadores Windows e Mac está aqui: https://www.cssfontstack.com/. Deve ser suficiente adicionar regras CSS para as fontes ao seu modelo de e-mail do Discourse.

Você poderia tentar usar fontes da web de um serviço externo para seus e-mails, mas precisa estar ciente de que muitos clientes de e-mail não suportam fontes da web. Alguns detalhes sobre isso estão aqui: The Ultimate Guide to Web Safe Fonts for Email Marketing | Litmus.

3 curtidas

Obrigado. Eu usaria uma fonte segura para a web. No exemplo acima, há uma parte [if mso], mas não consigo ver onde a fonte para clientes que não sejam o Outlook é definida.

1 curtida

No modelo de exemplo, as fontes para clientes de e-mail que não são do Outlook estão sendo definidas com regras CSS que são adicionadas diretamente aos elementos HTML. Por exemplo:

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

Então eles são. Vou culpar a tela estreita do celular e deixar por isso mesmo :slight_smile:

2 curtidas

É possível personalizar a fonte do texto ao lado do avatar? Refiro-me ao texto para:

[Nome real] [Nome de usuário]
[Data]

Consegui alterar o restante do texto do e-mail, mas o texto acima tem o seguinte 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 curtida

Existem outras variáveis disponíveis no modelo de e-mail?

Por exemplo, seria útil ter %{year} para evitar a necessidade de atualizar os rodapés dos e-mails. Isso está disponível?

1 curtida