Skip to content

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

🔧 Porque é que o WordPress não está a enviar emails e como resolver

🔧 Porque é que o WordPress não está a enviar emails e como resolver

Verificou o seu e-mail e não encontrou nada. Nenhuma mensagem de reposição de palavra-passe, nenhuma confirmação de encomenda, nenhum e-mail de teste do formulário de contacto. Os clientes contactam o suporte, mas as respostas nunca chegam. O WordPress permanece em silêncio e não consegue perceber porquê.

Este problema é dolorosamente familiar para qualquer pessoa que tenha lançado um site WordPress. O servidor de correio padrão funciona através do mail(), uma função interna do PHP. Os fornecedores de alojamento bloqueiam-na frequentemente e as mensagens acabam no spam ou simplesmente não são enviadas.

Spoiler: isto resolve-se em 15 a 20 minutos configurando um servidor SMTP. Abaixo encontra um guia passo a passo das causas, diagnósticos e dois métodos de configuração funcionais: via API do Gmail e via Mailgun. Sem pânico, com capturas de ecrã.

💡 Visão geral rápida:

  • Verifique se o servidor de correio do WordPress está ativo, o plugin Check Email mostra a situação real num minuto
  • Saiba porque é que o mail() não é fiável e como o SMTP resolve o problema
  • Configure o SMTP do Gmail com OAuth 2.0, passo a passo, desde a Google Console até ao estado verde
  • Ligue o Mailgun através do WP Mail SMTP, para sites com tráfego que precisam de mais de 100 e-mails por dia
  • Aborde questões comuns: porque é que os e-mails vão para o spam, que porta escolher, o que fazer com erros de autenticação

Porque é que o WordPress não envia e-mails

O WordPress utiliza a função wp_mail() por defeito, que internamente chama a função mail() do PHP. O problema é que o mail() é um mecanismo básico sem autenticação. Os serviços de e-mail modernos, como o Gmail, Yahoo e Outlook, exigem encriptação e verificação do remetente. Sem elas, as mensagens são bloqueadas pelo alojamento ou marcadas como spam pelo lado recetor.

A segunda causa comum é a falta de registos DKIM e SPF no DNS. Estas são assinaturas digitais que dizem aos servidores de correio: «o remetente é legítimo, a mensagem não é falsificada». Sem eles, o Gmail enviará a sua mensagem diretamente para a pasta «Spam».

Finalmente, os plugins podem ser os culpados. Algumas soluções anti-spam e plugins de formulários de contacto intercetam a fila de e-mails e bloqueiam envios «suspeitos». Isto é especialmente verdade para envios em massa, para os quais o mail() é fundamentalmente inadequado.

Como verificar o funcionamento do servidor de correio do WordPress

Antes de mergulhar nas configurações SMTP, exclua o cenário de mail() inativo. O plugin Check Email faz exatamente isto: envia uma mensagem de teste através do mecanismo padrão do WordPress e mostra o resultado.

Instale o Check Email a partir do repositório do WordPress (Plugins → Adicionar Novo → escreva "Check Email"), ative-o e vá a Ferramentas → Check Email. Introduza o seu endereço, clique em "Send test email" e, em poucos segundos, verá um relatório.

Relatório do plugin Check Email após envio de teste

Verifique as pastas «Caixa de entrada» e «Spam». Se a mensagem chegou, o mail() funciona e o problema está num plugin específico (formulário de contacto, WooCommerce). Contacte o suporte desse plugin. Se não houver mensagem, o mail() está bloqueado pelo alojamento e precisa de SMTP.

Como configurar SMTP via Gmail no WordPress

SMTP (Simple Mail Transfer Protocol) é um protocolo com autenticação e encriptação. Ao contrário do simples mail(), os e-mails via SMTP passam pela verificação de identidade, não são bloqueados pelo alojamento e raramente acabam no spam.

O primeiro método é o plugin Gmail SMTP, que liga o WordPress diretamente à sua conta Google via OAuth 2.0. Tem mais de 100 avaliações no WordPress.org e atualizações regulares. A versão gratuita permite enviar até 100 e-mails por dia, o que é suficiente para um site pequeno ou blogue.

Instale o Gmail SMTP a partir do repositório oficial do WordPress, ative-o.

Página do plugin Gmail SMTP no WordPress.org

De seguida, precisa da Google Cloud Console. Vá a console.cloud.google.com, crie um novo projeto.

Criação de um novo projeto na Google Cloud Console

Na barra lateral, selecione «APIs & Services» → «Credentials», clique em «Create Credentials» e escolha «OAuth client ID». O sistema pedir-lhe-á para configurar o ecrã de consentimento, especifique o tipo «External» e preencha os campos obrigatórios (nome da aplicação, e-mail de suporte). Clique em «Save and Continue».

Configuração do ID de cliente OAuth na Google Cloud Console

Volte à criação do ID de cliente OAuth: o tipo de aplicação é «Web application», o nome é «Gmail SMTP».

Formulário de criação de aplicação web na Google Cloud Console

Agora regresse à administração do WordPress: nas definições do plugin Gmail SMTP, copie o Authorized Redirect URL.

Configurações do plugin Gmail SMTP com URL de redirecionamento

Volte à Google Console, cole o URL copiado no campo «Authorized redirect URIs» e guarde. Após guardar, aparecerá uma janela com o Client ID e o Client Secret; copie ambos os valores e cole-os nos campos correspondentes do plugin.

Especifique o endereço de Gmail a partir do qual os emails serão enviados (o mesmo que usou para criar o projeto), preencha o campo «From Email Address» e defina o «From Name» (o nome do seu site). A porta SMTP é 587 para TLS. Se usar um certificado SSL, defina 465. Clique em «Save Changes», depois em «Grant Permission» e conclua a autenticação Google.

Configuração do plugin Gmail SMTP com campos de ID de cliente e segredo

Após a concessão bem-sucedida, o plugin mostrará um estado verde «Connected». Envie um email de teste; se chegar, está tudo pronto.

Como configurar o Mailgun para envio de emails no WordPress

Se o seu site precisar de mais de 100 emails por dia e quiser uma infraestrutura de entrega fiável, considere o Mailgun. Trata-se de um serviço de correio para developers com um plano gratuito até 100 emails por dia (receção é gratuita) e planos pagos a partir de $35 por mês para 50.000 emails. A principal vantagem são as análises detalhadas de entrega: pode ver se um email foi aberto ou não, e se foi parar ao spam.

Painel de configuração de domínio no serviço Mailgun

Registe-se em mailgun.com. Após criar uma conta, adicione um domínio; o Mailgun solicitará que introduza um subdomínio (por exemplo, mg.your-site.com) e fornecerá registos DNS: TXT para verificação, MX para encaminhamento de email e CNAME para rastreio de aberturas.

Aceda ao painel do seu alojamento (cPanel, ISPmanager ou similar), abra o editor de DNS e adicione os registos fornecidos pelo Mailgun:

  • Registo TXT: o Nome é o seu subdomínio, o Tipo é TXT, o TTL é 14400, os Dados TXT são o valor do painel Mailgun
  • Registo MX: na secção «MX Entry», introduza a prioridade e o destino fornecidos pelo Mailgun
  • CNAME: para rastreio de aberturas e cliques

As atualizações de DNS demoram de alguns minutos a 48 horas. Verifique o estado na secção «Domains» do painel Mailgun; quando mostrar «Active», pode prosseguir.

Para ligar o Mailgun ao WordPress, instale o WP Mail SMTP, o plugin SMTP mais popular, com mais de 3 milhões de instalações ativas. Vá a Settings → WP Mail SMTP; em «From Email», indique um endereço no seu domínio; em «From Name», o nome do seu site. No campo «Mailer», selecione «Mailgun».

Configuração da ligação Mailgun no plugin WP Mail SMTP

Cole a Private API Key do painel Mailgun (secção «API Keys») e o nome de domínio que registou. Ative a opção «Set the return path to match the From Email»; isto alinha o endereço de retorno e reduz a probabilidade de cair no spam. Clique em «Save Settings» e envie um teste através do separador «Email Test».

Tutorial em vídeo: configurar SMTP no WordPress

Se prefere ver a ler, aqui está um tutorial em vídeo sobre a configuração de SMTP no WordPress, desde a instalação do plugin até ao primeiro email enviado:

⁉️🤔 Perguntas frequentes

Porque é que os emails do WordPress vão para o spam mesmo com SMTP configurado?

Na maioria das vezes, o problema é a falta de registos SPF e DKIM no DNS do domínio. Sem eles, o servidor de correio do destinatário não consegue verificar se o seu servidor tem o direito de enviar emails a partir desse domínio. Adicione um registo TXT SPF (v=spf1 include:_spf.google.com ~all para o Gmail ou algo semelhante para o Mailgun) e uma chave DKIM a partir do painel do serviço de correio. O segundo fator é a reputação do IP: em alojamentos baratos, o endereço IP pode já ter sido sinalizado por envios de spam antes de si.

Que porta SMTP escolher: 587 ou 465?

A porta 587 com TLS é o padrão moderno recomendado pela IETF para submissão de correio eletrónico por clientes. A porta 465 com SSL é uma alternativa desatualizada, ainda suportada por muitos fornecedores por questões de compatibilidade. Use a 587 com TLS, a menos que o serviço de correio exija explicitamente a 465.

O plugin SMTP do Gmail dá um erro de autenticação. O que fazer?

As três causas mais comuns: os URLs de redirecionamento não coincidem (verifique se o mesmo endereço está na Google Console e no plugin), a aplicação na Google Cloud está no estado "Teste" (mude para "Produção" ou adicione o seu Gmail à lista de utilizadores de teste), ou a autenticação de dois fatores do Google está ativada sem uma palavra-passe de aplicação (crie uma palavra-passe de aplicação nas definições de segurança do Google).

Posso enviar envios em massa mailings através do SMTP do Gmail?

Não. O Gmail tem limites rigorosos: 100 emails por dia através do plugin Gmail SMTP, até 2000 através do Google Workspace. Para marketing por email e envios regulares, utilize o Mailgun, Brevo (anteriormente Sendinblue) ou SendGrid, que têm integrações com o WordPress e uma infraestrutura de entrega dedicada.

Preciso de um plano pago do Mailgun para um site pequeno?

O plano gratuito do Mailgun (100 emails por dia) é suficiente para um site médio: notificações de encomendas do WooCommerce, reposições de palavra-passe, confirmações de registo, emails de formulários de contacto. Um plano pago faz sentido quando o volume diário excede uma centena ou quando precisa de análises de abertura com armazenamento de registos superior a 24 horas.

Porque não devo confiar no mail() integrado do WordPress?

A função mail() não autentica o remetente, não encripta a ligação e não adiciona assinaturas DKIM/SPF. A maioria dos fornecedores de alojamento ou a bloqueia ao nível do servidor (devido ao risco de ataques de spam) ou encaminha o tráfego através de IPs partilhados com baixa reputação. O resultado: os emails não chegam numa parte significativa dos casos, e os que chegam são frequentemente marcados como spam.

Vale a pena mudar para SMTP agora mesmo

Se os emails de reposição de palavra-passe não estão a sair do seu site, os clientes não estão a receber notificações de encomendas e o formulário de contacto está em silêncio, a resposta é clara: precisa de SMTP hoje. Não se trata de uma questão de "vale a pena", mas sim de "qual exatamente".

Para um blog pessoal e uma landing page, a combinação Gmail SMTP com a sua conta Gmail é suficiente. Configure em 20 minutos e esqueça o assunto. Para um site com produtos, cursos ou utilizadores, instale o WP Mail SMTP com o Mailgun: o plano gratuito cobre as necessidades de uma loja online típica, e as análises de entrega alertá-lo-ão se algo correr mal.

Não adie. Enquanto lê este parágrafo, o cliente de alguém não recebeu um email de confirmação. O SMTP resolve isto de uma vez por todas.