Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🔧 Contact form 7: configurar a entrega de e-mails e corrigir erros de envio

🔧 Contact form 7: configurar a entrega de e-mails e corrigir erros de envio

Como o Contact Form 7 envia emails e porque falham a entrega

O Contact Form 7 é usado em mais de 5 milhões de websites, o que faz dele o plugin de formulários mais popular para WordPress. Criar um formulário de três campos demora apenas alguns minutos, mas quando os emails deixam de chegar, as dores de cabeça começam: os proprietários dos sites perdem contactos, não fazem ideia do que correu mal e acabam mergulhados em tópicos de fóruns.

O problema quase nunca é o plugin em si. O CF7 entrega o email à função wp_mail(), que o passa ao seu servidor. A partir daí, o que acontece depende do seu alojamento, das configurações de PHP, dos plugins ativos e de uma dúzia de outros fatores. Basta a REST API estar desativada ou um campo "From" incorreto, e o formulário funciona, mas os emails não chegam.

Compilámos um guia passo a passo para configurar o modelo de email do CF7 e analisámos todas as razões comuns para a falha na entrega, com soluções específicas testadas em dezenas de sites.

💡 Visão geral rápida:

  • Preenchimento dos campos Para, De e Assunto nas definições de email
  • Cópia de um modelo pronto de corpo de email em HTML
  • Verificação das principais razões pelas quais os emails não são enviados
  • Configuração de SMTP para uma entrega fiável

Configurar o modelo de email: passo a passo

Abra o seu formulário no painel de administração: Contact Form → selecione o seu formulário → separador "Mail". É aqui que o CF7 monta o email a partir de três partes: cabeçalhos, assunto e corpo. Um erro em qualquer campo quebra a entrega, por isso vamos analisar cada um.

Para, De e Assunto

Para é o seu endereço de email profissional onde as submissões chegam. Por exemplo, [email protected] ou um endereço Gmail se estiver a usar um plugin SMTP.

De tem uma regra fundamental: o domínio do remetente deve corresponder ao domínio do seu site. A maioria dos servidores de alojamento rejeita emails onde o campo "De" contém [email protected] enquanto o site está em mysite.com. Use [email protected]; a caixa de correio não precisa de existir realmente, e isso não é problema. O servidor de correio verifica o domínio, não se o endereço é real.

Assunto pode incluir macros do CF7 para dados dinâmicos:

1[_site_title]Form "Contact Form"

[_site_title] insere automaticamente o nome do seu site a partir das definições do WordPress. Desta forma, vê imediatamente de que projeto veio a submissão.

Cabeçalhos adicionais: deixe o Reply-to como está; o CF7 definirá automaticamente o email a partir do campo do formulário que especificar no corpo do email.

Corpo do email: modelo HTML

O email padrão do CF7 é em texto simples com etiquetas de campo. Tem um aspeto pobre e é difícil de ler. Aqui está o modelo que usamos em todos os nossos projetos, com um logótipo, estrutura adequada e links clicáveis de email/telefone:

1<img src="https://YOUR_DOMAIN.COM/wp-content/uploads/2024/logo-150x150.png"
2 style="max-width: 150px !important;">
3
4<h3>The user submitted the following information:</h3>
5
6<p><b>Name:</b> [text-59]</p>
7<p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p>
8<p><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p>
9<p><b>Message:</b> [textarea-102]</p>
10
11<p>Message sent from [_site_title] ([_site_url])</p>

Pontos-chave: o logótipo deve ser quadrado e compacto (cerca de 150 px de lado), caso contrário, quebrará nos clientes de email. As macros entre parênteses retos ([text-59], [Email]) são as etiquetas dos campos do seu formulário; substitua-as pelos seus próprios nomes do separador "Form". E certifique-se de que marca a caixa "Use HTML content type" abaixo do editor de modelo, caso contrário, as etiquetas HTML chegarão como texto simples.

Caixa de seleção de tipo de conteúdo HTML no CF7

6 Razões pelas quais os emails não são enviados e como resolver

1. Campo "De" incorreto

O erro mais comum: o campo "De" contém o email do cliente do formulário, [Email]. O servidor recetor vê um email de um domínio gmail.com enviado do seu alojamento e bloqueia-o como falsificação. Solução: "De" deve ser sempre um endereço no domínio do seu site. Coloque o email do cliente no Reply-to através de um cabeçalho adicional:

1Reply-To: [Email]

2. Conflitos com plugins de segurança

Plugins como Wordfence, iThemes Security (agora Solid Security) e All-In-One Security podem bloquear pedidos HTTP de saída do WordPress, incluindo o envio de emails. O diagnóstico é simples: desative todos os plugins exceto o Contact Form 7 e teste o formulário. Se funcionar, ative os plugins um a um para encontrar o culpado.

3. REST API está desativada

O Contact Form 7 usa a REST API do WordPress para submeter formulários via AJAX. Plugins de otimização, como o Clearfy Cache (nota: a partir de outubro de 2025, o projeto foi absorvido pelo Super Page Cache e já não é desenvolvido separadamente; os utilizadores atuais são aconselhados a migrar para o Super Page Cache), podem desativar a REST API para acelerar o site. Verifique as definições do seu otimizador: a opção REST API deve estar "Off", o que significa que a REST API está ativada e a funcionar.

4. O alojamento bloqueia a função mail()

Em alojamentos baratos, a função PHP mail() está frequentemente desativada ou restrita. O Contact Form 7 envia emails através dela por padrão. Contacte o suporte do seu alojamento e pergunte se mail() é permitida no seu plano. Se não for, mude para SMTP (ver secção abaixo); isto resolve o problema completamente.

5. Os emails caem no spam

Mesmo que o email tenha sido enviado, o Gmail ou o serviço de correio do seu alojamento podem colocá-lo no spam. As razões incluem: falta de registos SPF/DKIM para o domínio, um cabeçalho "De" "suspeito", HTML sem uma parte de texto. Solução: um plugin SMTP que envie através de um serviço externo (Gmail API, Mailgun, SendGrid). Eles assinam cada email com uma assinatura DKIM e usam servidores SMTP respeitáveis, tornando a entregabilidade quase 100%.

6. Sensibilidade à versão do PHP e WordPress

O CF7 é ativamente atualizado (verifique a versão atual em wordpress.org; em meados de 2026, é o ramo 6.x, a correr em PHP 7.4 e superior). Se o seu alojamento corre um PHP 5.6 antigo, ou, pelo contrário, ativou o PHP 8.4 experimental sem verificar a compatibilidade, os emails podem falhar silenciosamente. Mantenha-se no PHP 8.1-8.2; este é o ponto ideal.

Configurar SMTP: resolver o problema de entrega de uma vez por todas

SMTP é um protocolo que transmite email não através da função mail() do seu servidor, mas através de um serviço de correio completo. O WordPress tem uma dúzia de plugins que intercetam wp_mail() e encaminham emails através de um servidor SMTP externo.

O que escolher:

  • Gmail API: gratuito até 500 emails por dia via Google Workspace ou uma conta Gmail pessoal. Prós: excelente entregabilidade. Contras: precisa de criar um projeto no Google Cloud Console e obter chaves OAuth.
  • Brevo (anteriormente Sendinblue): 300 emails gratuitos por dia, SMTP simples com login e palavra-passe. Sem necessidade de OAuth.
  • Mailgun: 100 emails gratuitos por dia, obtenha uma chave API e está pronto. Para programadores.

Instale qualquer plugin SMTP (WP Mail SMTP, Post SMTP, FluentSMTP; todos são gratuitos no repositório do WordPress), insira as credenciais do seu fornecedor e já não precisa da função mail(). O CF7 continua a funcionar como habitualmente, mas os emails passam por um canal fiável.

CSS e tipos de letra personalizados em emails do CF7

Se estiver a enviar não apenas submissões de contacto, mas, digamos, confirmações de encomendas com breves detalhes do produto, faz sentido estilizar o email. CSS em email funciona através de estilos inline (style=""); os clientes de email ignoram folhas de estilo externas. Aqui está um exemplo de um modelo estilizado:

1<img src="https://YOUR_DOMAIN.COM/logo.png"
2 style="max-width: 150px !important;">
3
4<h2 style="font-family: Arial, sans-serif; color: #333;">
5 The user selected a product:
6</h2>
7<h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2>
8
9<hr style="border: 1px solid #eee;">
10
11<h3 style="font-family: Arial, sans-serif; color: #555;">
12 The user submitted the following information:
13</h3>
14
15<p style="font-size: 14px;"><b>Name:</b> [text-59]</p>
16<p style="font-size: 14px;"><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p>
17<p style="font-size: 14px;"><b>Email:</b> [Email]</p>
18
19<p style="color: #999; font-size: 12px;">
20 Message sent from <b>[_site_title] ([_site_url])</b>
21</p>

Aplicam-se as mesmas regras: logótipo quadrado, caixa de formato HTML ativada, macros substituídas pelas suas. Tipos de letra personalizados do Google Fonts não funcionam em email; use pilhas de tipos de letra do sistema (Arial, Helvetica, sans-serif).

⁉️🤔 Perguntas frequentes

Porque é que o CF7 mostra "Mensagem enviada" mas não há email?

O CF7 é responsável por recolher dados e passá-los ao WordPress, não pela entrega final. A resposta de "sucesso" significa que o pedido AJAX foi concluído sem erros. O envio real do email acontece em segundo plano via wp_mail(), e se algo correr mal nesse passo (alojamento bloqueou mail(), o endereço De falhou a validação, o email foi para spam), o CF7 não mostrará um erro. É por isso que deve sempre testar o formulário enviando para uma caixa de correio real após a configuração.

Um plugin SMTP é obrigatório?

Não é obrigatório, mas fortemente recomendado. Sem SMTP, os seus emails são enviados pela função PHP mail(), que não autentica o remetente, não assina DKIM e é frequentemente bloqueada por filtros de spam. Um plugin SMTP adiciona autenticação e melhora drasticamente a entregabilidade. Na prática, já vimos dezenas de sites onde o formulário "funcionava", mas os emails iam para spam ou nunca chegavam. Após ativar SMTP via Post SMTP ou FluentSMTP, o problema desapareceu em 5 minutos.

O que devo fazer se o CF7 deixou de funcionar após uma atualização do WordPress?

Primeiro, verifique a sua versão do PHP; o CF7 requer PHP 7.4 ou superior (verifique na documentação oficial). Depois, desative plugins de cache e otimização: eles frequentemente quebram a REST API quando o núcleo é atualizado. Se isso não ajudar, mude temporariamente para um tema padrão do WordPress e teste o formulário. Na maioria dos casos, é um conflito com um plugin de cache ou segurança que ainda não se adaptou à nova versão do núcleo.

Como verifico se a REST API está a funcionar?

Abra https://your-site.com/wp-json/ no seu navegador. Se vir JSON com uma lista de endpoints disponíveis, a REST API está ativa. Se obtiver um 404 ou uma página em branco, a REST API foi desativada por um plugin de otimização ou segurança. Este é o método de diagnóstico mais rápido: se o endpoint devolver JSON, o CF7 tem tudo o que precisa para funcionar. Procure definições da REST API em plugins como Clearfy, Perfmatters, WP-Optimize, ou em soluções de segurança como Wordfence.

Posso enviar emails com anexos através do CF7?

Sim, o CF7 suporta upload de ficheiros via o campo [file]. Nas definições de email, no campo "Attachments", insira a macro para esse campo, e o ficheiro será anexado ao email. A maioria dos alojamentos limita o tamanho dos anexos via upload_max_filesize no PHP (geralmente 2-8 MB). Para múltiplos uploads, use campos separados. Se os emails com anexos não são enviados, mas o formulário funciona sem anexos, o problema é o limite de tamanho; reduza os tamanhos dos ficheiros ou peça ao seu alojamento para aumentar o limite.

O que usar em 2026: CF7 + SMTP ou alternativas?

O Contact Form 7 continua a ser o melhor plugin gratuito para formulários WordPress se precisar de personalização e não tiver medo de explorar as definições. Mas o problema de entrega de email está enraizado na própria arquitetura do WordPress: a função mail() é inerentemente não fiável.

Portanto, a fórmula de 2026 é: Contact Form 7 + plugin SMTP. Instale o FluentSMTP (gratuito, leve, sem anúncios no admin) ou o Post SMTP e configure o envio através do Gmail API, Brevo ou Mailgun. Estes dois componentes juntos dão-lhe: personalização ilimitada de formulários + entregabilidade de nível empresarial. Custo: 0€, tempo de configuração: 10 minutos.

Se quiser um formulário que funcione "pronto a usar" sem qualquer incómodo, considere o WPForms ou o Ninja Forms. São pagos, mas o envio SMTP está incorporado por padrão através dos seus próprios servidores. A escolha é sua: a flexibilidade do CF7 ou a simplicidade das soluções comerciais.

🔗 Contact Form 7 no WordPress.org | 🔗 Documentação do CF7