Envio SMTP de resposta aprovada
Objetivo
A Issue #17 permite que o gestor envie manualmente uma resposta já aprovada na tela administrativa de e-mails.
A IA continua apenas sugerindo. Ela não envia e-mail, não aprova e não executa ações.
Fluxo
- A coleta IMAP salva o e-mail original.
- A IA sugere classificação, ação e resposta.
- O gestor revisa a resposta.
- O gestor aprova a resposta para envio futuro.
- O gestor clica em Enviar resposta aprovada.
- O sistema valida o status, a conta SMTP, o destinatário e o corpo.
- O sistema envia por SMTP.
- Somente após sucesso, preenche
sent_ate altera status parasent.
Diferença entre aprovar e enviar
Aprovar resposta define:
status = approvedapproved_atpreenchidoapproved_by = adminsent_at = null
Enviar resposta define:
status = sentsent_atpreenchidosmtp_message_idquando disponível
Endpoint
POST /api/admin/emails/suggested-replies/{reply}/send
Protegido por X-Admin-Token.
Comando Artisan
php artisan email:send-approved-reply {replyId}
O comando não faz envio em lote.
Headers de thread
Quando disponíveis, o envio preserva:
Subject: Re: assunto originalIn-Reply-ToReferences
Bloqueios
O envio é bloqueado quando:
- resposta não está
approved; sent_atjá está preenchido;- remetente original é inválido;
- remetente original é
no-reply,noreply,donotreplyoudo-not-reply; - conta não tem SMTP configurado;
- corpo final está vazio.
Timeout SMTP
O envio usa timeout explícito no transporte SMTP, configurado por:
MAIL_SMTP_TIMEOUT=15
Isso ajuda a transformar conexões SMTP travadas em falhas diagnósticas mais rápidas, sem depender apenas do timeout global do worker.
Segurança
Nunca registrar em auditoria:
- senha SMTP;
- senha IMAP;
- corpo da resposta;
- corpo original do e-mail;
- headers crus;
- stack trace bruto.
Diagnóstico de conectividade na VPS
Quando houver timeout ou travamento no envio, valide a conectividade da VPS antes de concluir que a falha é da aplicação:
timeout 15 bash -c '</dev/tcp/smtp.kinghost.net/465' && echo "TCP 465 OK" || echo "TCP 465 FALHOU"
timeout 15 bash -c '</dev/tcp/smtp.kinghost.net/587' && echo "TCP 587 OK" || echo "TCP 587 FALHOU"
timeout 15 bash -c '</dev/tcp/smtp.kinghost.net/25' && echo "TCP 25 OK" || echo "TCP 25 FALHOU"
timeout 20 openssl s_client -connect smtp.kinghost.net:465 -servername smtp.kinghost.net -brief
timeout 20 openssl s_client -connect smtp.kinghost.net:587 -servername smtp.kinghost.net -starttls smtp -brief
Achado da homologação:
consultor@senadevtech.com.brfuncionou comsmtp.senadevtech.com.br;carlossena@sost.com.brnão conseguiu abrir conexão comsmtp.kinghost.netnas portas465,587e25a partir da VPS;- em casos assim, a causa pode estar na conectividade do provedor SMTP.
Fora do escopo
- envio em massa;
- scheduler;
- retry automático;
- anexos;
- HTML avançado;
- OAuth Gmail/Microsoft;
- mover, apagar ou marcar e-mail no IMAP.