# Como corrigir email de pedido do WooCommerce não enviado

Quando o WooCommerce não envia o email de pedido, o cliente não recebe a confirmação e a loja não é avisada da venda. A causa quase sempre é a função mail() do PHP sendo bloqueada pela hospedagem ou marcada como spam; configurar um SMTP autenticado resolve a maioria dos casos.

## O que é o email de pedido do WooCommerce que não é enviado?

Quando o WooCommerce não envia o email de pedido, as notificações transacionais (novo pedido, pedido processando, pedido concluído) não saem do servidor ou não chegam à caixa de entrada. Por padrão o WordPress envia com a função mail() do PHP, que muitos provedores bloqueiam ou que cai direto no spam por falta de autenticação SPF/DKIM. Sem SMTP, a entrega fica frágil.

## Como identificar

- O cliente conclui a compra mas não recebe o email "Seu pedido foi recebido".
- A loja não recebe a notificação "Novo pedido" no email do administrador.
- Um email de teste pelo WP Mail SMTP retorna erro ou simplesmente não chega.
- Só alguns destinatários recebem (ex.: Gmail recebe, mas Outlook joga no spam).

**Antes de começar:** Guarde a senha ou a chave de API do SMTP com cuidado: ela permite enviar email em nome do seu domínio. Prefira uma chave de API revogável a usar a senha principal da conta de email.

## Como prevenir

- Use sempre SMTP autenticado com remetente do próprio domínio, nunca a função mail() do PHP
- Mantenha SPF e DKIM válidos e monitore a reputação do domínio remetente
- Faça um pedido de teste após qualquer migração ou troca de servidor de email

Erros relacionados

- [Como corrigir checkout do WooCommerce que não funciona](https://full.services/wp-fixer/corrigir-checkout-woocommerce-nao-funciona/)
- [Como corrigir pagamento do WooCommerce com erro](https://full.services/wp-fixer/corrigir-pagamento-erro-woocommerce/)
- [Como corrigir webhook do WooCommerce que não dispara](https://full.services/wp-fixer/corrigir-webhook-woocommerce-nao-dispara/)

## Causa

- Função mail() do PHP desativada ou bloqueada pela hospedagem (comum em planos compartilhados).
- Ausência de SMTP autenticado, fazendo os provedores marcarem o email como spam ou recusarem.
- Registros SPF e DKIM ausentes ou errados no DNS do domínio remetente.
- Email remetente usando um domínio diferente do servidor (ex.: @gmail.com como From), reprovado pela antifalsificação.
- Status do pedido não dispara o email correspondente porque a notificação está desativada em WooCommerce > Configurações > Emails.

## Como resolver

1. Confirme que as notificações estão ativas: em WooCommerce > Configurações > Emails, verifique se "Novo pedido", "Pedido processando" e "Pedido concluído" estão habilitados e com o destinatário certo.
2. Instale um plugin de SMTP: use o WP Mail SMTP ou similar para enviar via servidor autenticado (do seu provedor de email, SendGrid, Brevo etc.) em vez da função mail() do PHP.
3. Use um remetente do próprio domínio: configure o From como um email @seudominio.com, nunca @gmail.com ou @hotmail.com. Remetente de domínio externo é recusado pela antifalsificação.
4. Configure SPF e DKIM: adicione os registros SPF e DKIM do seu provedor de SMTP no DNS do domínio para autenticar o envio e sair do spam.
5. Envie um email de teste: use a ferramenta de teste do plugin de SMTP. Se chegar, refaça um pedido real para confirmar o disparo das notificações do WooCommerce.

## Código

```php
// Força um remetente do próprio domínio (coloque em um plugin de snippets, não no functions do tema)
add_filter( 'wp_mail_from', function( $email ) {
  return 'pedidos@seudominio.com';
} );
add_filter( 'wp_mail_from_name', function( $name ) {
  return 'Loja Seudominio';
} );
```

## Perguntas frequentes

### Por que o cliente não recebe mas a loja sim (ou o contrário)?

Cada notificação tem destinatário e gatilho próprios. "Novo pedido" vai para o admin; "Pedido recebido" vai para o cliente. Se uma chega e a outra não, confira se ambas estão ativas e com o email correto em WooCommerce > Emails.

### Preciso mesmo de um plugin de SMTP?

Na prática, sim. A função mail() do PHP é bloqueada por muitos hosts e cai no spam por falta de autenticação. Um SMTP autenticado com SPF e DKIM é a forma confiável de entregar os emails transacionais.

### O que são SPF e DKIM?

São registros no DNS que provam que o seu servidor tem permissão para enviar email em nome do domínio. Sem eles, provedores como Gmail e Outlook tratam a mensagem como possível falsificação e a jogam no spam.

### Posso usar um remetente @gmail.com?

Não recomendado. Enviar como @gmail.com a partir do seu servidor falha na antifalsificação do Google e é recusado ou marcado como spam. Use um endereço do seu próprio domínio como remetente.

### O email cai no spam, não some. É o mesmo problema?

É o mesmo conjunto de causas. Cair no spam geralmente indica SPF/DKIM ausentes ou remetente de domínio externo. Configurar SMTP autenticado e os registros de DNS tira a mensagem da pasta de spam.

### Os emails pararam depois que migrei de host. Por quê?

O novo servidor pode bloquear a função mail() ou ter outro IP sem reputação. Reconfigure o SMTP apontando para o provedor de email e atualize SPF/DKIM para incluir o novo serviço de envio.

**Fonte:** [WooCommerce — WooCommerce Email FAQ](https://woocommerce.com/document/email-faq/)
