
🔧 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.

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:
1 Reply-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 bloqueoumail(), 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 viaupload_max_filesizeno 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.



