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
@@ -108,6 +108,21 @@
|
||||
</div>
|
||||
|
||||
<p class="text-xs text-slate-400 mt-2">Si se deja vacío, se usará la configuración SMTP general del sistema.</p>
|
||||
|
||||
<div class="flex flex-wrap gap-2 mt-3 items-center">
|
||||
<input x-model="emailPrueba" type="email" placeholder="tu@correo.com"
|
||||
class="border border-slate-200 rounded-lg px-3 py-2 text-sm outline-none">
|
||||
<button @click="probarEnvio()" :disabled="ocupado"
|
||||
class="px-4 py-2 rounded-lg border border-slate-300 text-sm text-slate-700 disabled:opacity-50">
|
||||
Enviar correo de prueba
|
||||
</button>
|
||||
<span x-show="mensajeEnvio" x-text="mensajeEnvio" class="text-sm"
|
||||
:class="errorEnvio ? 'text-red-600' : 'text-green-600'"></span>
|
||||
</div>
|
||||
<p class="text-xs text-slate-400 mt-1">
|
||||
Sale por el mismo camino que el acuse automático que recibe el cliente cuando se le crea un ticket.
|
||||
Si esta prueba falla, ese acuse tampoco está llegando.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- ─── IMAP entrante ────────────────────────────────────────── -->
|
||||
@@ -291,6 +306,9 @@ function soporteWebhook() {
|
||||
ocupado: false,
|
||||
mensajeImap: '',
|
||||
errorImap: false,
|
||||
emailPrueba: '',
|
||||
mensajeEnvio: '',
|
||||
errorEnvio: false,
|
||||
|
||||
async init() {
|
||||
try {
|
||||
@@ -381,6 +399,20 @@ function soporteWebhook() {
|
||||
this.ocupado = false;
|
||||
},
|
||||
|
||||
async probarEnvio() {
|
||||
this.ocupado = true;
|
||||
this.mensajeEnvio = '';
|
||||
try {
|
||||
const r = await axios.post('/app/soporte/webhook/probar-envio', { email: this.emailPrueba });
|
||||
this.errorEnvio = false;
|
||||
this.mensajeEnvio = r.data?.message || 'Enviado';
|
||||
} catch (e) {
|
||||
this.errorEnvio = true;
|
||||
this.mensajeEnvio = e.response?.data?.error || e.message;
|
||||
}
|
||||
this.ocupado = false;
|
||||
},
|
||||
|
||||
probarImap() { return this.llamarImap('/app/soporte/webhook/probar-imap', 'Conexión correcta'); },
|
||||
revisarAhora() { return this.llamarImap('/app/soporte/webhook/revisar-buzon', 'Buzón revisado'); },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user