/** * Script para testar envio de e-mail * Uso: bun scripts/test-email.ts [destinatario] */ import { sendSmtpMail } from "../src/server/email-smtp" import { renderTemplate } from "../src/server/email/email-templates" const DESTINATARIO = process.argv[2] || "renan.pac@paulicon.com.br" // Credenciais do SMTP (usando as da documentacao) const smtpConfig = { host: "smtp.c.inova.com.br", port: 587, username: "envio@rever.com.br", password: "CAAJQm6ZT6AUdhXRTDYu", from: '"Sistema de Chamados" ', starttls: true, tls: false, rejectUnauthorized: false, timeoutMs: 15000, } async function testEmail() { console.log("=".repeat(50)) console.log("TESTE DE ENVIO DE E-MAIL") console.log("=".repeat(50)) console.log(`Destinatario: ${DESTINATARIO}`) console.log(`SMTP: ${smtpConfig.host}:${smtpConfig.port}`) console.log("") // 1. Teste basico console.log("[1/10] Enviando e-mail de teste basico...") try { const html = renderTemplate("test", { title: "Teste do Sistema de E-mail", message: "Este e-mail confirma que o sistema de notificacoes esta funcionando corretamente.", timestamp: new Date().toLocaleString("pt-BR", { timeZone: "America/Sao_Paulo" }), }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Teste - Sistema de Chamados Raven", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 2. Teste de abertura de chamado console.log("\n[2/10] Enviando notificacao de abertura de chamado...") try { const html = renderTemplate("ticket_created", { reference: 12345, subject: "Problema no sistema de vendas", status: "PENDING", priority: "HIGH", createdAt: new Date().toISOString(), viewUrl: "https://tickets.esdrasrenan.com.br/tickets/12345", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Chamado #12345 Aberto - Problema no sistema de vendas", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 3. Teste de resolucao de chamado console.log("\n[3/10] Enviando notificacao de resolucao...") try { const html = renderTemplate("ticket_resolved", { reference: 12345, subject: "Problema no sistema de vendas", assigneeName: "Joao Silva", resolutionSummary: "O problema foi identificado como uma configuracao incorreta no modulo de pagamentos. A configuracao foi corrigida e o sistema esta funcionando normalmente.", viewUrl: "https://tickets.esdrasrenan.com.br/tickets/12345", rateUrl: "https://tickets.esdrasrenan.com.br/rate/12345", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Chamado #12345 Resolvido - Problema no sistema de vendas", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 4. Teste de comentario console.log("\n[4/10] Enviando notificacao de comentario...") try { const html = renderTemplate("ticket_comment", { reference: 12345, subject: "Problema no sistema de vendas", authorName: "Joao Silva", commentBody: "Estou analisando o problema e em breve envio uma atualizacao. Por favor, verifique se o erro persiste apos limpar o cache do navegador.", commentedAt: new Date().toISOString(), viewUrl: "https://tickets.esdrasrenan.com.br/tickets/12345", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Nova atualizacao no Chamado #12345", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 5. Teste de atribuicao de chamado console.log("\n[5/10] Enviando notificacao de atribuicao...") try { const html = renderTemplate("ticket_assigned", { reference: 12345, subject: "Problema no sistema de vendas", status: "AWAITING_ATTENDANCE", priority: "HIGH", requesterName: "Maria Santos", assigneeName: "Joao Silva", isForRequester: false, viewUrl: "https://tickets.esdrasrenan.com.br/tickets/12345", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Chamado #12345 Atribuido", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 6. Teste de mudanca de status console.log("\n[6/10] Enviando notificacao de mudanca de status...") try { const html = renderTemplate("ticket_status", { reference: 12345, subject: "Problema no sistema de vendas", oldStatus: "PENDING", newStatus: "AWAITING_ATTENDANCE", viewUrl: "https://tickets.esdrasrenan.com.br/tickets/12345", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Status do Chamado #12345 Alterado", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 7. Teste de reset de senha console.log("\n[7/10] Enviando notificacao de reset de senha...") try { const html = renderTemplate("password_reset", { resetUrl: "https://tickets.esdrasrenan.com.br/reset-password?token=abc123", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Redefinicao de Senha - Raven", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 8. Teste de convite console.log("\n[8/10] Enviando notificacao de convite...") try { const html = renderTemplate("invite", { inviterName: "Admin Sistema", roleName: "Agente", companyName: "Empresa Teste", inviteUrl: "https://tickets.esdrasrenan.com.br/invite?token=xyz789", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Voce foi convidado - Raven", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 9. Teste de novo login console.log("\n[9/10] Enviando notificacao de novo login...") try { const html = renderTemplate("new_login", { loginAt: new Date().toISOString(), userAgent: "Chrome 120 no Windows 11", ipAddress: "189.45.123.78", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "Novo Acesso Detectado - Raven", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } // 10. Teste de SLA em risco console.log("\n[10/10] Enviando notificacao de SLA em risco...") try { const html = renderTemplate("sla_warning", { reference: 12345, subject: "Problema no sistema de vendas", status: "AWAITING_ATTENDANCE", priority: "HIGH", requesterName: "Maria Santos", assigneeName: "Joao Silva", timeRemaining: "2 horas", dueAt: new Date(Date.now() + 2 * 60 * 60 * 1000).toISOString(), viewUrl: "https://tickets.esdrasrenan.com.br/tickets/12345", }) await sendSmtpMail(smtpConfig, DESTINATARIO, "ALERTA: SLA em Risco - Chamado #12345", html) console.log(" SUCESSO!") } catch (error) { console.error(" ERRO:", (error as Error).message) } console.log("\n" + "=".repeat(50)) console.log("TESTE CONCLUIDO - 10 TIPOS DE NOTIFICACAO") console.log("=".repeat(50)) console.log(`Verifique a caixa de entrada de: ${DESTINATARIO}`) } testEmail().catch(console.error)