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

Obrigado, @simon!

Você poderia ser tão gentil a ponto de fornecer o texto completo do modelo? Eu ficaria feliz em tentar.

3 curtidas

Obrigado por apontar isso. Deve ter sido um erro de copiar/colar quando criei o tópico. Adicionei o modelo completo ao post agora.

3 curtidas

Como podemos obter o logo_url do Discourse neste modelo? Isso é possível?

1 curtida

A maneira mais fácil pode ser abrir o inspeção de elementos do navegador no seu site do Discourse e copiar o valor do atributo src do logotipo para o template. Você também pode obter a URL do logotipo no console do Rails, verificando o valor da propriedade url retornada por SiteSetting.logo.

4 curtidas

Ok, legal, é assim que estou fazendo agora, obrigado!

2 curtidas

Muito bom. Acho que isso deveria ser o padrão. A maioria dos sites usa uma coluna centralizada de 600px de largura.

Parece que deveria haver um wrapper separado para editar nos e-mails de resumo.

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