# Como corrigir o JetBooking que não envia notificações por e-mail no WordPress

O JetBooking não envia email quando o WordPress não entrega mensagens via wp_mail sem um SMTP configurado, ou quando a acao de envio de e-mail do formulário de reserva esta ausente ou mal mapeada. A página não tem motor de e-mail próprio: a notificação depende do wp_mail e da acao Send Email do JetFormBuilder.

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

O JetBooking não envia email é a falha em que uma reserva é criada com sucesso, mas o hospede ou o administrador nunca recebe a notificação de confirmacao. O JetBooking gerencia disponibilidade, datas e o fluxo de reserva, mas não possui um servidor de e-mail próprio: a notificação é disparada pela função wp_mail do WordPress, geralmente acionada pela acao Send Email no Post Submit do formulário de reserva criado com o JetFormBuilder, ou por outra integração que escute a criação da reserva.

Por isso, o problema quase sempre nasce em uma de duas camadas. Na camada de entrega, o wp_mail usa a função mail() do PHP, que em hospedagem compartilhada costuma ser bloqueada, cair em spam ou ser rejeitada por SPF/DKIM quando o remetente não bate com o domínio; sem um plugin de SMTP, nada chega. Na camada de configuração, a acao Send Email pode não ter sido adicionada ao formulário, o destinatario pode apontar para um campo vazio, ou o status da reserva que deveria disparar o aviso nunca é atingido. Identificar em qual camada esta o defeito é o primeiro passo da correção.

## Como identificar

- A reserva aparece corretamente no painel em JetBooking -> Bookings, mas nenhum e-mail de confirmacao chega ao hospede nem ao administrador.
- O e-mail de teste do WordPress (ou de um plugin de SMTP) também não é entregue, indicando que o wp_mail do site não envia nada.
- A confirmacao chega na caixa de spam com remetente do tipo wordpress@seudominio em vez do e-mail oficial configurado.
- No log do formulário aparece a mensagem 'The email was not sent' ou a acao Send Email não registra disparo ao concluir a reserva.
- O e-mail do administrador chega, mas o do hospede não (ou o inverso), apontando para um campo de destinatario mal mapeado na acao.

**Antes de começar:** Antes de instalar plugins de SMTP, alterar credenciais de e-mail ou desativar plugins de segurança em producao, faça um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para poder reverter caso a entrega ou o login quebrem.

## Como prevenir

- Configure um SMTP autenticado com remetente do próprio domínio assim que publicar o site de reservas, em vez de confiar na função mail() do PHP.
- Mantenha registros SPF e DKIM do domínio ativos para que as confirmacoes de reserva não caiam em spam nos provedores de e-mail dos hospedes.
- Após qualquer edição no formulário de reserva, faça uma reserva de teste de ponta a ponta e confirme que o e-mail chega ao hospede e ao administrador.
- Evite manter dois plugins de SMTP ativos ao mesmo tempo, pois um pode sobrescrever a configuração do outro e interromper o envio sem aviso.

Erros relacionados

- [Como corrigir o JetBooking que não processa reservas](https://full.services/wp-fixer/corrigir-jetbooking-nao-processa-reservas/)
- [Como corrigir o JetFormBuilder que não envia formulários](https://full.services/wp-fixer/corrigir-jetformbuilder-nao-envia/)
- [Como corrigir o Calendar do JetEngine que não exibe eventos dinâmicos](https://full.services/wp-fixer/corrigir-jetengine-calendar-eventos/)

## Causa

- Nenhum plugin de SMTP esta ativo e o wp_mail do WordPress depende da função mail() do PHP, que a hospedagem compartilhada bloqueia ou marca como spam, impedindo qualquer entrega.
- A acao Send Email não foi adicionada ao bloco Post Submit Actions do formulário de reserva no JetFormBuilder, entao a reserva é salva mas nenhum e-mail é programado para sair.
- O campo To da acao Send Email aponta para uma macro de campo vazia ou inexistente (por exemplo um campo de e-mail do hospede que não foi preenchido ou não foi mapeado), e o e-mail é gerado sem destinatario valido.
- O endereco From da notificação usa um domínio diferente do site sem registro SPF/DKIM correspondente, fazendo o servidor de destino rejeitar ou jogar a mensagem em spam.
- Um plugin de segurança ou de SMTP configurado com credenciais erradas (porta, host ou senha de app invalida) intercepta o wp_mail e aborta o envio antes da entrega.

## Como resolver

1. Confirme se o WordPress consegue enviar e-mail: Antes de mexer no JetBooking, valide a camada de entrega. Instale um plugin de SMTP e use a função de e-mail de teste dele. Se o teste não chegar, o problema é do wp_mail do site, não do JetBooking, e precisa ser resolvido primeiro.

```
Painel WP -> Plugins -> Adicionar novo -> instale um plugin de SMTP (ex.: WP Mail SMTP)
Abra o plugin -> Email Test -> envie um e-mail de teste para o seu endereco
Se o teste não chegar, prossiga para o passo 2 antes de revisar o formulário
```

2. Configure um SMTP autenticado: Aponte o wp_mail para um servidor SMTP autenticado em vez da função mail() do PHP. Use as credenciais do seu provedor de e-mail e um remetente do mesmo domínio do site para passar nas checagens SPF e DKIM.

```
No plugin de SMTP, informe Host, Porta (587 TLS ou 465 SSL), Usuário e Senha do provedor
Defina o From Email com um endereco do próprio domínio (ex.: reservas@seudominio.com)
Salve e reenvie o e-mail de teste para confirmar a entrega
```

3. Verifique a acao Send Email no formulário de reserva: Abra o formulário de reserva criado no JetFormBuilder e confirme que existe uma acao Send Email no Post Submit. Sem essa acao, a reserva é salva mas nenhuma notificação é programada.

```
Painel WP -> JetFormBuilder -> abra o formulário de reserva
Va até Post Submit Actions e confirme a presenca da acao 'Send Email'
Se não existir, clique em New Action e adicione 'Send Email'
```

4. Corrija o destinatario e o remetente da notificação: Abra a acao Send Email e revise os campos To, From e Reply To. O destinatario deve usar a macro do campo de e-mail do hospede (ou o e-mail fixo do administrador), nunca um campo que pode ficar vazio. O From precisa ser do domínio do site.

```
Na acao Send Email, no campo To selecione a macro do campo de e-mail do formulário (ex.: %email%)
Defina o From Email com um endereco do próprio domínio e o Reply To com o e-mail de atendimento
Salve o formulário e faça uma reserva de teste para confirmar o disparo
```

5. Isole conflito de plugin de segurança ou SMTP: Se o teste de SMTP passa mas a reserva não dispara e-mail, desative temporariamente plugins de segurança e qualquer segundo plugin de SMTP, recarregando o fluxo de reserva a cada teste para achar o que intercepta o wp_mail.

```
Painel WP -> Plugins -> desative plugins de segurança e SMTP duplicados um a um
Refaca uma reserva de teste após cada desativacao e verifique a caixa de entrada
Reative os plugins ao identificar o culpado e ajuste a configuração dele
```


## Código

```php
<?php
// Força o remetente do wp_mail para um endereco do proprio dominio,
// reduzindo o risco de a confirmacao do JetBooking cair em spam.
add_filter( 'wp_mail_from', 'full_jetbooking_from_email' );
function full_jetbooking_from_email( $original ) {
    return 'reservas@seudominio.com';
}

add_filter( 'wp_mail_from_name', 'full_jetbooking_from_name' );
function full_jetbooking_from_name( $original ) {
    return 'Reservas do Site';
}

// Registra falhas de envio no log para diagnosticar o que o JetBooking nao entrega.
add_action( 'wp_mail_failed', 'full_jetbooking_log_mail_error' );
function full_jetbooking_log_mail_error( $wp_error ) {
    error_log( 'JetBooking wp_mail falhou: ' . $wp_error->get_error_message() );
}
```

## Perguntas frequentes

### Por que o JetBooking não envia e-mail de confirmacao de reserva

Na maioria dos casos o WordPress não consegue entregar e-mails sem um SMTP configurado, ou a acao Send Email do formulário de reserva esta ausente ou com destinatario vazio. Configure um plugin de SMTP e revise a acao Send Email no JetFormBuilder.

### O JetBooking tem um servidor de e-mail próprio

Não. O JetBooking gerencia datas e disponibilidade, mas a notificação depende do wp_mail do WordPress, normalmente disparado pela acao Send Email do formulário de reserva. Por isso a correção passa por garantir que o site consegue enviar e-mails.

### Preciso de um plugin de SMTP para o JetBooking enviar e-mail

Na prática, sim. A função mail() do PHP usada pelo wp_mail costuma ser bloqueada ou marcada como spam em hospedagem compartilhada. Um SMTP autenticado com remetente do próprio domínio garante a entrega das confirmacoes.

### Onde fica a configuração de e-mail da reserva no JetBooking

Quando o formulário de reserva é feito com o JetFormBuilder, o e-mail é definido na acao Send Email dentro de Post Submit Actions do formulário. La você ajusta destinatario, remetente, assunto e conteúdo da notificação.

### Por que a confirmacao da reserva cai na caixa de spam

Geralmente o remetente usa um domínio diferente do site sem registro SPF ou DKIM correspondente, o que faz o servidor de destino desconfiar da mensagem. Use um From do próprio domínio e mantenha SPF e DKIM configurados.

### O administrador recebe o e-mail mas o hospede não, o que fazer

Isso indica que o campo To da acao destinada ao hospede aponta para uma macro de e-mail vazia ou mal mapeada. Abra a acao Send Email e selecione a macro correta do campo de e-mail preenchido pelo hospede no formulário.

### Como testar se o problema é do JetBooking ou do envio de e-mail do site

Primeiro envie um e-mail de teste pelo plugin de SMTP. Se o teste não chegar, o defeito é da entrega do site e não do JetBooking. Se o teste chegar mas a reserva não dispara e-mail, o problema esta na acao Send Email do formulário.

**Fonte:** [Crocoblock Knowledge Base — JetBooking](https://crocoblock.com/knowledge-base/jetbooking/)
