← voltar Desenho de linha de um formulário web com um envelope em um caminho tracejado quebrado seguindo para uma caixa de correio vazia

Contact Form 7 Não Está Enviando Email? Resolva em Essa Ordem

WordPress

Os emails do Contact Form 7 geralmente desaparecem por causa de como o WordPress os envia, não por causa do formulário em si. Por padrão, o WordPress passa a mensagem para a função PHP mail no seu servidor web, e WP Mail SMTP diz que sem a autenticação adequada essas mensagens caem em spam ou desaparecem. Abaixo você encontra uma lista de diagnóstico ordenada da causa mais para a menos provável, o ajuste SMTP e os registros DNS que vêm com ele, a armadilha do filtro de spam, uma forma de guardar uma cópia de cada pergunta, e como formulários em sites headless contornam o problema inteiro.

Por que os emails do Contact Form 7 desaparecem

Contact Form 7 não envia email por si próprio. Ele constrói a mensagem e a passa para o WordPress, que a envia com wp_mail(). De fora da caixa, de acordo com o anúncio WP Mail SMTP, o WordPress usa a função PHP mail para qualquer coisa gerada pelo WordPress ou um plugin de formulário de contato. Essa função envia a mensagem através do servidor que hospeda seu site. Aquele servidor muitas vezes não consegue provar quem realmente é o remetente do email.

Os servidores receptores verificam essa prova. O mesmo anúncio diz que Gmail, Yahoo, Office 365 e Zoho verificam se o email vem de um remetente genuíno, e quando a autenticação não está lá, o email vai para spam ou desaparece. Também afirma que a maioria das empresas de hospedagem WordPress não têm seus servidores devidamente configurados para PHP mail. Trate isso como uma afirmação do vendedor, porque o vendedor vende a solução, e como um padrão comum, não como um veredicto sobre qualquer host específico. Muitos hosts lidam com email perfeitamente bem.

A evidência do fórum aponta na mesma direção. Em uma thread de suporte de maio de 2024, a leitura de um moderador foi que o WordPress provavelmente estava enviando emails direto sem autenticação, e o servidor de email reconheceu isso e os arquivou como spam. A pessoa que perguntou já havia mudado o endereço De, marcado como VIP e escrito uma regra de email. Ainda lixo. Isso te diz algo: quando suas próprias regras de caixa de entrada não ajudam, a falha fica a montante da sua caixa de entrada.

Mais um ponto de dados. Contact Form 7 mostra mais de 10 milhões de instalações ativas em seu anúncio WordPress.org. O anúncio de outro plugin diz mais de 5 milhões, então as fontes discordam sobre o número, mas de qualquer jeito é uma grande base de usuários. Isso significa que a mesma falha é reportada de cem formas diferentes.

Verificações rápidas antes de mexer em mais nada

Gaste cinco minutos aqui antes de ler um único registro DNS.

Leia a mensagem de resposta

O próprio FAQ do Contact Form 7 é direto: uma borda vermelha significa que o plugin tentou enviar com wp_mail() e falhou, e você precisa encontrar a razão real. A mesma página cobre o caso oposto, um 'Obrigado pela sua mensagem. Ela foi enviada.' em verde, onde o email nunca chega. Há também um detalhe: a mensagem padrão 'Houve um erro ao tentar enviar sua mensagem.' aparece tanto quando o envio falhou por qualquer razão quanto quando atividade de spam foi detectada. Essa frase sozinha não consegue te dizer qual problema você tem.

Verifique a aba Mail

Abra Contact, escolha o formulário, depois abra a aba Mail. Dois campos importam mais. O endereço Para deve ser uma caixa de correio que você realmente lê, sem nenhum erro de digitação. O endereço De deve usar seu próprio domínio. Um endereço De que usa o email do visitante parece falsificação para um servidor receptor, porque, tecnicamente, é. Coloque o endereço do visitante em um cabeçalho Reply-To em vez disso, para que você ainda possa clicar em responder.

Procure em spam, depois pense sobre o horário

Verifique a pasta de lixo da caixa de correio receptora, e qualquer regra de filtragem nela. Se as mensagens estão lá, você tem um problema de entregabilidade em vez de um problema de entrega. Isso precisa de um ajuste diferente.

A lista de diagnóstico, causa mais provável primeiro

  1. A aba Mail está errada. Verifique: endereço Para, endereço De, um erro de digitação solto. Ajuste: use um endereço real no seu domínio em De, e mova o endereço do visitante para Reply-To.
  2. A mensagem está em lixo. Verifique: pasta de spam, quarentena, regras de caixa de correio compartilhada. Ajuste: se estiver lá, vá para o passo 4. Marcar remetentes como seguros raramente se sustenta para email não autenticado.
  3. O formulário mostra uma borda vermelha. Verifique: a mensagem de resposta e a entrada do FAQ do Contact Form 7 sobre ela. Ajuste: isso significa que wp_mail() falhou, então o problema fica com a configuração de email do site. Vá para o passo 4.
  4. O WordPress está enviando por PHP mail sem autenticação. Verifique: você está usando um plugin SMTP ou um serviço de email? Ajuste: instale um e envie um email de teste (próxima seção).
  5. Registros DNS estão faltando ou errados. Verifique: SPF, DKIM e DMARC no domínio de envio. Ajuste: adicione os registros que seu provedor de email fornece.
  6. Um filtro de spam está rejeitando mensagens reais. Verificar: desativar temporariamente o captcha ou a integração com Akismet e reenviar. Corrigir: ajustar a integração, não deixar o formulário desprotegido.
  7. Algo mais no site está interferindo. Verificar: mudar para um tema padrão, desativar outros plugins, limpar caches. Corrigir: reativar um por um até quebrar novamente.
  8. Uma atualização recente mudou algo. Verificar: sua versão do PHP contra o requisito declarado pelo plugin. Corrigir: ver as perguntas frequentes abaixo.

A maioria das pessoas para na etapa 4. Isso geralmente está correto. A lista de verificação é ordenada por um motivo: não compre um serviço de email para corrigir um typo.

A correção confiável: envio autenticado e registros DNS

O reparo confiável é parar de usar PHP mail não autenticado. Envie via SMTP, ou por um serviço de email transacional, um serviço construído para enviar emails automatizados como notificações de formulário, usando um plugin como WP Mail SMTP. Conforme seu anúncio, o plugin reconfigura wp_mail() para usar credenciais de host SMTP ou um provedor de email. Com as integrações de provedor que recomenda, o email vai pela API direta do provedor, que o anúncio diz funcionar mesmo quando seu host de web bloqueia portas SMTP.

Desenho de linha de um envelope passando por um portão de cadeado a caminho de uma caixa de entrada

Algumas observações honestas sobre o plugin:

  • Escolha do mailer. O anúncio marca SendLayer, SMTP.com e Brevo como recomendados. Microsoft One-Click Setup, Amazon SES e Zoho Mail são marcados como Pro. Gmail SMTP, Mailgun, SendGrid, Postmark e outros estão na lista gratuita.
  • Permissões gratuitas. O anúncio cita 300 emails gratuitos por dia para Brevo e até 100 por dia para SendGrid. Esses são números que o fornecedor do plugin declara, então verifique a página de cada provedor antes de confiar neles. Um formulário de contato em um site pequeno envia poucos mensagens, então os limites raramente afetam, mas você deve saber onde estão.
  • Conflito de interesses. É propriedade e mantido pelo time por trás do WPForms, um construtor de formulário concorrente. Isso não impede que funcione com Contact Form 7, e é sobre o que trata o artigo sobre Contact Form 7 do fornecedor. Outros plugins SMTP existem se preferir não usá-lo.
  • O logging é pago. Logging de email, reenvio, alertas e uma conexão de backup estão listados como recursos Pro, um plugin pago separado. A versão gratuita envia. Ela não mantém um registro.

A configuração é simples. Escolha um mailer, defina o endereço De para um em um domínio que controla, envie o email de teste do plugin, depois envie seu formulário real. O plugin também executa uma verificação de domínio: quando você envia um email de teste e ao final do Assistente de Configuração, ele envia o endereço De, mailer e domínio de envio para verificar os registros DNS do domínio, e Ferramentas > Saúde do Site mostra o último resultado. Saiba disso se se importa para onde seus dados vão.

SPF, DKIM e DMARC em termos simples

Esses são três registros DNS, e é o que transforma 'enviado' em 'confiável'.

  • SPF lista quais servidores têm permissão para enviar email para seu domínio.
  • DKIM adiciona uma assinatura a cada mensagem, verificada contra uma chave pública que você publica no DNS.
  • DMARC diz aos servidores receptores o que fazer quando essas verificações falham, e para onde enviar relatórios.

A tela de configuração do seu provedor de email fornece os registros exatos para colar, então não vou inventar nenhum aqui. Um ponto prático: se seu domínio já tem um registro SPF, edite-o em vez de adicionar um segundo. O DNS fica onde seus nameservers de domínio apontam, que pode ser seu registrador, seu host ou um serviço como Cloudflare. Não tem certeza? Olhe os nameservers primeiro. Poupa muito de editar no dashboard errado.

Filtros de spam e falsos positivos

Contact Form 7 pode ser emparelhado com proteção contra spam como reCAPTCHA e Akismet. Isso é sensato, genuinamente, um formulário público sem proteção atrai lixo rapidamente. Mas qualquer filtro que pontua envios pode pontuar um real de forma errada, e então sua consulta é silenciosamente descartada. Lembre-se do ponto de perguntas frequentes de antes: o mesmo erro na tela cobre falha de email e detecção de spam.

O teste é simples. Desative a integração por um momento, envie uma mensagem realista de um dispositivo diferente, e veja se chega. Se chegar, o filtro era o problema. Afrouxe-o, não o delete.

Aqui estão os lugares onde uma mensagem legítima pode ser descartada:

  • O captcha pontua o visitante como um bot, e o formulário o recusa
  • Akismet marca a mensagem como spam antes de chegar à etapa de email
  • Um plugin de cache ou otimização quebra o script que o formulário precisa
  • A caixa de correio receptora filtra após a entrega

Às vezes não é nenhum dos dois. Um tópico de fórum descreve o erro 'Failed to send your message. Please try later or contact the administrator by another method.' com um status AJAX de 200 e reCAPTCHA v3 funcionando. O autor do plugin, Takayuki Miyoshi, pediu o tema e plugins, sugeriu mudar para o tema padrão, desativar outros plugins e limpar caches, e observou que uma falha registrada com SMTP ligado ou desligado sugere que SMTP é improvável de ser a causa. Conselho chato. Frequentemente o conselho correto.

Mantenha uma cópia de cada envio

A maioria dos proprietários aprende isso tarde demais: email é uma notificação, não um registro. Se o email falhar, a consulta desaparece, e o visitante viu uma mensagem educada de 'enviado'. Você nunca saberá.

A solução é armazenar todos os envios também no banco de dados. Vários add-ons do Contact Form 7 fazem isso. Como exemplo, o plugin Contact Form to Any API lista entre seus recursos salvar os envios do Contact Form 7 no banco de dados, com exportação para CSV, Excel, PDF e impressão. Ele também pode enviar os envios para APIs remotas, um CRM, por exemplo, via POST ou GET, com até 5 conexões de API. A versão 3.0.6, de 8 de julho de 2026, adicionou notificações por e-mail em caso de falha nas requisições à API e uma limpeza automática de logs, com padrão de 90 dias.

Esse último detalhe é um lembrete útil. Consultas armazenadas são dados pessoais, então decida quanto tempo você as mantém. Uma entrada salva só ajuda se alguém abrir a lista de vez em quando, então coloque uma verificação recorrente no calendário. O log do WP Mail SMTP Pro pago mencionado anteriormente registra emails enviados, o que é útil, mas não é a mesma coisa que armazenar o que o visitante enviou.

Como sites headless e estáticos lidam com formulários

Um site estático ou headless não tem PHP e não tem wp_mail(). O formulário envia para outro lugar: um endpoint executado por um serviço de formulário como Formspree, manipulação nativa de formulários da plataforma de hospedagem, ou uma função serverless que você escreve. O envio é armazenado primeiro. Email torna-se uma notificação entre várias, não a única cópia.

Netlify Forms é um exemplo claro. Depois que você ativa a detecção de formulário, adicionar data-netlify="true" ou um atributo netlify a um formulário HTML permite receber envios no painel de admin do site Netlify, sem nenhuma chamada de API extra ou JavaScript. Alguns detalhes específicos dos documentos:

  • Enviar por AJAX requer um corpo codificado em URL. Netlify Forms não oferece suporte a dados de formulário JSON no momento.
  • Uploads de arquivo permitem um arquivo por campo, máximo de solicitação de formulário de 8 MB e um tempo limite de 30 segundos.
  • Se seu formulário é renderizado por JavaScript ou um framework de servidor como Next.js, você deve incluir um formulário HTML que atenda aos critérios do Netlify, porque sua compilação encontra formulários analisando o HTML do site.

Notificações são separadas do armazenamento. De acordo com a documentação de notificações, podem ir para email, webhooks ou um workspace do Slack, para um formulário ou todos os formulários. Por padrão, os emails vêm de formresponses@netlify.com, e as respostas vão para esse endereço a menos que você adicione uma entrada chamada email, que define o valor Reply-to. A mesma lição de antes: mesmo aqui, um email de notificação tem peculiaridades que você gostaria de testar.

Se você está decidindo se uma configuração de formulário assim se adequa ao seu site, o assistente de pilha WordPress é uma maneira rápida de ver onde sua compilação atual se situa.

Quando ficar com WordPress é o certo

Para a maioria dos sites de pequenos negócios, ficar no lugar é adequado. Um formulário de contato é um recurso pequeno. Se você adicionar envio autenticado, registros DNS corretos e uma cópia armazenada de cada entrada, formulários WordPress são tão confiáveis quanto os de qualquer outro. Mover plataformas para corrigir um problema de email é como trocar o carro porque a lâmpada indicadora apagou. Se você está curioso sobre a pergunta mais ampla, há um artigo sobre deixar WordPress e um resumo de alternativas, mas nenhum é motivo para se apressar.

FAQ

Meu email de teste SMTP funciona, mas o formulário ainda não envia. Por quê?

Isso significa que o email sai do seu site bem, então a falha está em algum lugar entre o formulário e wp_mail(). Usuários de fórum relatam exatamente isso. Um disse que o email de teste SMTP estava OK mas nenhum formulário foi enviado, e remover o captcha não ajudou. Outro relatou que, após rotear o email através do WP Mail SMTP, outros emails funcionavam mas Contact Form 7 não entregou em três formulários, e a primeira pergunta do autor do plugin foi onde o formulário estava no site, veja o tópico de maio de 2026. Siga as etapas de isolamento: tema padrão, outros plugins desativados, caches limpos.

Preciso do WP Mail SMTP Pro?

Não, não para corrigir a entrega. O plugin gratuito faz o envio. Pro é um plugin pago separado que adiciona registro de email, reenvio, alertas e uma conexão de backup. Vale a pena considerar se você quer um registro de falhas, mas um add-on de banco de dados para os envios também cobre o risco de lead perdido.

Meus formulários pararam logo após uma atualização. Pode ser PHP?

Possivelmente. A listagem do plugin mostra PHP 8.3 ou superior como requisito para a versão 6.2.3. Dois revisores na listagem dizem que o mínimo subiu de 7.4 para 8.3 na versão 6.2, e um relata uma atualização automática quebrando um site que usava PHP 8.0. Esses são relatórios de usuários, não uma declaração de mantenedor. Verifique sua versão de PHP no painel de controle de hospedagem, e faça um backup antes de atualizar qualquer coisa.

O fato mais útil: Contact Form 7 passa o email para WordPress, e WordPress por padrão o envia sem autenticação através de PHP mail, então SMTP autenticado mais registros DNS corretos corrige o caso usual. A ressalva mais aguçada é que email sozinho nunca é um registro, então armazene cada envio também. Se a correção não funcionar, suspeite do ambiente do formulário, não do servidor de email.

← voltar