Design e HTML

HTML de email: por que quebra no Outlook e como resolver

Quem vem do desenvolvimento web tem um choque ao construir o primeiro email: técnicas que funcionam em qualquer navegador desde 2015 simplesmente não funcionam. Este texto explica por quê, e mostra o que fazer no lugar — inclusive a parte que ninguém avisa sobre o Outlook e o modo escuro.

Por que HTML de email é tão difícil

Existem três razões, e nenhuma delas vai mudar tão cedo.

Não existe um motor de renderização, existem dezenas

Um site precisa funcionar em alguns navegadores, todos razoavelmente modernos. Um email precisa funcionar em Gmail (web, Android, iOS), Apple Mail, Outlook (desktop, web, Mac, celular), Yahoo, Thunderbird e nos apps nativos de cada fabricante — cada um com regras próprias sobre o que aceita de CSS.

Muitos clientes de email removem coisas

Boa parte deles descarta ou reescreve a tag <style>, ignora seletores complexos, remove <script> por segurança e limita o que pode ser posicionado. O que sobra é um subconjunto bem menor do que o HTML e CSS que você conhece.

A conta é diferente

Num site, você atende o navegador que o usuário escolheu. Num email, você atende todos ao mesmo tempo, sem saber qual será usado — e sem chance de corrigir depois que a mensagem saiu.

Por que ainda se constrói com tabelas

Não é conservadorismo. É porque float, flexbox e grid não têm suporte confiável no conjunto de clientes que importa — em especial nas versões de desktop do Outlook.

A estrutura padrão continua sendo tabelas aninhadas, com o CSS inline em cada elemento:

<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr>
    <td align="center" style="padding:24px 16px;">
      <table role="presentation" width="600" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td style="font-family:Arial,sans-serif;font-size:16px;
                     line-height:24px;color:#1a1a1a;">
            Conteúdo aqui
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>

Três detalhes que importam nesse trecho:

  • role="presentation" — diz ao leitor de tela que a tabela é layout, não dado. Sem isso, quem usa leitor ouve "tabela com 1 linha e 1 coluna" antes de cada bloco.
  • CSS inline — a forma mais confiável de garantir que o estilo sobreviva.
  • Largura de 600 pixels — a convenção que cabe no painel de leitura da maioria dos clientes de desktop.
Não escreva isso à mão

Use um framework de email (MJML e similares) ou o construtor da sua plataforma. Eles geram a tabelada e as correções de compatibilidade automaticamente. Entender o que acontece por baixo serve para depurar quando algo quebra — não para digitar tudo.

O problema específico do Outlook

As versões desktop do Outlook para Windows renderizam email com o motor do Word, não com um motor de navegador. Isso produz um conjunto de comportamentos próprios que explicam a maioria dos "ficou perfeito em todo lugar, menos no Outlook".

O que costuma quebrar

  • background-image em divs é ignorado. Para fundo com imagem, é preciso usar a marcação específica de VML ou aceitar uma cor sólida como alternativa.
  • border-radius não é aplicado — botões arredondados aparecem quadrados.
  • max-width é ignorado em muitos contextos. Use width fixo nas tabelas.
  • padding em alguns elementos se comporta de forma imprevisível. Prefira padding em <td>.
  • Altura de linha pode ser recalculada. Defina line-height explicitamente e em pixels.
  • Imagens grandes podem ser redimensionadas de forma estranha. Sempre defina width e height no atributo, não só no CSS.

Comentários condicionais

A saída padrão para tratar o Outlook separadamente é o comentário condicional, que só ele interpreta:

<!--[if mso]>
  <!-- código que só o Outlook do Windows vai ler -->
<![endif]-->

Serve para dar um fallback específico — um botão retangular onde os outros veem um arredondado, por exemplo — sem afetar o restante.

Antes de brigar com o Outlook, veja se vale

Olhe a distribuição de clientes de email da sua base nos relatórios. Se 2% abrem no Outlook desktop, um botão quadrado para eles é aceitável. Se 40% da sua base é corporativa, o Outlook define o projeto inteiro — e o layout precisa nascer pensando nele.

Responsivo de verdade

Mais de 60% das aberturas acontecem no celular. Duas abordagens dominam:

Responsivo com media query

Funciona na maior parte dos clientes modernos. As media queries vão numa tag <style> no <head> — que alguns clientes descartam, e é por isso que ela nunca deve ser a única linha de defesa.

Fluido (a estratégia mais segura)

Construir com larguras percentuais e max-width, de forma que o layout se adapte mesmo sem media query. Onde ela funcionar, refina; onde não funcionar, o email continua legível.

O mínimo inegociável no celular

  • Fonte a partir de 16px no corpo. Menos que isso, o iOS aplica zoom automático e quebra o layout.
  • Botão com área de toque de pelo menos 44 pixels de altura.
  • Uma coluna abaixo de 600px. Duas colunas no celular sempre ficam apertadas.
  • Chamada principal acima da dobra — visível sem rolar.
  • Imagens com width:100%; height:auto dentro do container.

Modo escuro: o problema mais recente

Boa parte dos clientes de email hoje oferece tema escuro, e cada um inverte cores de um jeito. O resultado clássico: um logotipo preto em fundo branco vira preto em fundo preto — invisível.

O que fazer

  • Logotipo em PNG com transparência e contorno claro, ou versão que funcione nos dois fundos.
  • Evite texto preto puro (#000) e branco puro (#fff). Tons ligeiramente deslocados sofrem menos com a inversão automática.
  • Não coloque texto dentro de imagem. Além do modo escuro, isso quebra com imagens bloqueadas e é ilegível para leitor de tela.
  • Teste de verdade. Ative o modo escuro no seu celular e mande um teste antes de cada campanha nova.

Sem tempo para testar em dez clientes de email?

Nossos templates são testados em Gmail, Apple Mail e Outlook, no claro e no escuro, antes de qualquer disparo.

Ver modelos

Checklist antes de disparar

Passe por todos. Leva dez minutos e evita o email que ninguém consegue ler.

Estrutura

  • Tabelas com role="presentation" e CSS inline
  • Largura de 600px no container principal
  • width e height declarados em todas as imagens
  • Peso total do HTML abaixo de 100 KB — acima disso, o Gmail corta a mensagem e mostra "ver mensagem inteira", o que quebra o rastreio de abertura e esconde o rodapé

Conteúdo

  • Proporção alta de texto real em relação a imagem
  • alt descritivo em toda imagem — é o que aparece quando o carregamento está bloqueado
  • O email continua compreensível com todas as imagens desligadas. Teste isso.
  • Versão em texto puro gerada e revisada
  • Pré-header preenchido com conteúdo útil, não com "não consegue visualizar?"

Links e conformidade

  • Todos os links testados, com destino correto
  • Link de descadastro visível e funcionando
  • Cabeçalho List-Unsubscribe de um clique configurado
  • Endereço físico do remetente no rodapé

Renderização

  • Testado em Gmail (web e celular), Apple Mail e Outlook
  • Testado em modo escuro
  • Enviado para você mesmo e lido no celular, do jeito que o cliente vai ler
O teste que mais pega problema

Abra o email no celular, com as imagens bloqueadas e o modo escuro ligado. Se ele continuar legível e a chamada continuar clara nessas condições, vai funcionar em praticamente todo lugar.

E vale lembrar do óbvio: HTML impecável não salva email que não chega. Antes de investir horas em compatibilidade, confirme que SPF, DKIM e DMARC estão corretos — é o que decide se alguém vai ver o seu trabalho.

Achou útil? Compartilhe:
Continue lendo

Artigos relacionados

Diagnóstico gratuito

Quer isso funcionando na sua operação?

Analisamos sua base, sua entregabilidade e seus fluxos — e mostramos, com números, onde está o dinheiro parado. Sem custo e sem compromisso.

Fale com um especialista