# Como corrigir e-mails do WordPress que não são enviados (SMTP)

O WordPress não envia e-mail quando usa a função PHP mail() padrão, que a maioria das hospedagens bloqueia ou marca como spam por falta de autenticação. A correção é configurar SMTP autenticado, que entrega o e-mail por um servidor confiável (do seu domínio, Gmail, Brevo, etc.).

## O que é o WordPress que não envia e-mail?

O WordPress não envia e-mail é a falha em que notificações de novo usuário, redefinição de senha, pedidos do WooCommerce e formulários de contato simplesmente não chegam ao destinatário. A origem quase sempre é a função wp_mail(), que por padrão usa o comando PHP mail() do servidor: sem autenticação SMTP, sem registros SPF/DKIM, esse envio é recusado ou cai direto na caixa de spam. Trocar o transporte para SMTP autenticado resolve o problema na raiz.

## Como identificar

- O e-mail de "redefinição de senha" nunca chega, mesmo na pasta de spam.
- Pedidos do WooCommerce não disparam confirmação para o cliente nem para o admin.
- Um plugin de teste de e-mail mostra "e-mail enviado com sucesso", mas nada é recebido.
- O log do servidor registra "mail() has been disabled" ou a hospedagem informa que o PHP mail() está desativado.

**Antes de começar:** Nunca cole a senha principal da sua conta de e-mail no plugin. Use sempre uma senha de aplicativo dedicada (Gmail/Microsoft) ou a chave de API do provedor transacional, que pode ser revogada sem trocar a senha da conta.

## Como prevenir

- Configure SMTP autenticado logo na instalação, antes de depender de e-mails do site
- Mantenha SPF e DKIM publicados no DNS e revise-os ao trocar de provedor de e-mail
- Ative o log de e-mails do plugin de SMTP para auditar entregas e falhas antes que um cliente reclame

Erros relacionados

- [Como corrigir formulário de contato que não envia email](https://full.services/wp-fixer/corrigir-formulario-contato-nao-envia-wordpress/)
- [Como corrigir o WP-Cron que não executa](https://full.services/wp-fixer/corrigir-wp-cron-nao-executa/)
- [Como corrigir HTTP error ao enviar imagem](https://full.services/wp-fixer/corrigir-http-error-upload-imagem-wordpress/)

## Causa

- O WordPress usa a função PHP mail() padrão, sem autenticação, e o provedor de destino recusa ou marca como spam.
- A hospedagem desativou o comando mail() do PHP (comum em planos compartilhados para conter spam).
- Ausência de registros SPF e DKIM no DNS do domínio, então o destinatário rejeita a mensagem como falsificada.
- Endereço remetente (from) usa um domínio diferente do site, disparando o filtro anti-spoofing.
- Plugin de SMTP configurado com porta errada (587 vs 465) ou credenciais de senha de app incorretas.

## Como resolver

1. Confirme que o problema é de envio: instale um plugin de SMTP (como WP Mail SMTP ou FluentSMTP) e use a aba de e-mail de teste. Se o teste falha sem SMTP, o transporte padrão é a causa.
2. Escolha um provedor SMTP: use o SMTP do seu próprio domínio (via hospedagem), um serviço transacional (Brevo, Mailgun, Amazon SES) ou o Gmail com senha de app. Evite a senha normal da conta.
3. Configure host, porta e criptografia: preencha no plugin os dados do provedor. As combinações padrão são porta 587 com TLS ou porta 465 com SSL.
4. Alinhe o e-mail remetente ao domínio: use um remetente do mesmo domínio do site (ex.: contato@seudominio.com) para não acionar o filtro anti-spoofing.
5. Adicione SPF e DKIM no DNS: publique os registros SPF e DKIM que o provedor SMTP fornece. Eles autenticam o domínio e tiram os e-mails da caixa de spam.
6. Envie um novo teste: repita o e-mail de teste e confirme a chegada na caixa de entrada, não no spam.

## Código

```php
// functions.php do tema filho ou plugin de snippets — roteia o wp_mail() por SMTP
add_action( 'phpmailer_init', function ( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.seudominio.com';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Port       = 587;                 // 587 = TLS | 465 = SSL
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->Username   = 'contato@seudominio.com';
    $phpmailer->Password   = defined( 'SMTP_PASS' ) ? SMTP_PASS : ''; // defina em wp-config.php
    $phpmailer->From       = 'contato@seudominio.com';
    $phpmailer->FromName   = get_bloginfo( 'name' );
} );
```

## Perguntas frequentes

### Por que o WordPress não envia e-mail por padrão?

Porque ele usa a função PHP mail(), que envia sem autenticação. Provedores de destino tratam esse envio como suspeito e o recusam ou jogam no spam. SMTP autenticado resolve isso ao entregar por um servidor confiável.

### Qual a diferença entre porta 587 e 465 no SMTP?

A porta 587 usa criptografia TLS (STARTTLS) e é a recomendada hoje. A 465 usa SSL implícito e ainda funciona na maioria dos provedores. Se uma não conectar, teste a outra com a criptografia correspondente.

### Preciso de um plugin para configurar SMTP no WordPress?

Não é obrigatório, dá para fazer por snippet no functions.php, mas um plugin de SMTP adiciona log de envio, e-mail de teste e fila de retentativa, o que facilita o diagnóstico e evita perder mensagens.

### Por que meus e-mails caem no spam mesmo com SMTP?

Quase sempre faltam os registros SPF e DKIM no DNS do domínio. Sem eles, o destinatário não consegue confirmar que o e-mail é legítimo. Publique os registros que o provedor SMTP indicar.

### Posso usar o Gmail como servidor SMTP do WordPress?

Sim, mas use uma senha de aplicativo, nunca a senha da conta. O Gmail gratuito também tem limite diário de envio, então para volume alto prefira um serviço transacional como Brevo ou Amazon SES.

### O e-mail de teste funciona, mas os do WooCommerce não chegam. Por quê?

O teste valida o transporte SMTP, mas os e-mails do WooCommerce podem estar desativados nas configurações da loja ou com remetente diferente. Verifique WooCommerce, E-mails e confirme que cada notificação está ativa e usa o mesmo remetente autenticado.

**Fonte:** [WordPress Developer — wp_mail()](https://developer.wordpress.org/reference/functions/wp_mail/)
