fix(soporte): aviso repetido en Telegram y el acuse al cliente que no salía
Telegram: los avisos se mandaban a todas las configuraciones activas sin mirar a dónde apuntan. Con el mismo chat cargado en dos filas, cada aviso llegaba dos veces. Ahora se manda una vez por destino (bot + chat); los chats distintos siguen recibiendo todos. Correo al remitente: el camino STARTTLS abría una conexión, hacía StartTLS, autenticaba… y la descartaba para llamar a smtp.SendMail, que abre otra. La primera quedaba colgada y el envío real salía por una conexión distinta, que podía no estar autenticada. Reescrito: una sola conexión, asegurada según la configuración, y cierre con QUIT. Y como el acuse se manda en segundo plano, su error moría en el log. Ahora hay un botón "Enviar correo de prueba" que usa exactamente el mismo camino y devuelve el error del servidor en pantalla, y el último fallo del acuse real aparece en el resultado de "Revisar buzón ahora". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
17ed57cb56
commit
5afbd9e375
@@ -343,6 +343,9 @@ func RevisarBuzonAhora(c *fiber.Ctx) error {
|
||||
if descartes := services.UltimosCorreosDescartados(); len(descartes) > 0 {
|
||||
msg += fmt.Sprintf(" El filtro descartó %d: %s", len(descartes), strings.Join(descartes, " | "))
|
||||
}
|
||||
if e := services.UltimoErrorAcuse(); e != "" {
|
||||
msg += " ⚠️ " + e
|
||||
}
|
||||
return c.JSON(fiber.Map{"ok": true, "message": msg})
|
||||
}
|
||||
|
||||
@@ -380,3 +383,19 @@ func GetAgentesParaBorrador(c *fiber.Ctx) error {
|
||||
}
|
||||
return c.JSON(salida)
|
||||
}
|
||||
|
||||
// ProbarEnvioSoporte manda un correo de prueba por el mismo camino que el acuse
|
||||
// automático de los tickets.
|
||||
// POST /app/soporte/webhook/probar-envio
|
||||
func ProbarEnvioSoporte(c *fiber.Ctx) error {
|
||||
var b struct {
|
||||
Email string `json:"email"`
|
||||
}
|
||||
if err := c.BodyParser(&b); err != nil {
|
||||
return c.Status(400).JSON(fiber.Map{"error": "body inválido"})
|
||||
}
|
||||
if err := services.ProbarEnvioSoporte(b.Email); err != nil {
|
||||
return c.Status(400).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(fiber.Map{"ok": true, "message": "Correo de prueba enviado a " + b.Email})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user