- Updated the `reenviarEmail` mutation to return detailed error messages for better user feedback. - Added a new query to obtain email queue statistics, providing insights into email statuses. - Enhanced the `processarFilaEmails` mutation to track processing failures and successes more effectively. - Implemented a manual email processing mutation for immediate testing and control over email sending. - Improved email validation and error handling in the email sending action, ensuring robust delivery processes.
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
"use node";
|
|
|
|
import { action } from "../_generated/server";
|
|
import { v } from "convex/values";
|
|
|
|
export const testarConexao = action({
|
|
args: {
|
|
servidor: v.string(),
|
|
porta: v.number(),
|
|
usuario: v.string(),
|
|
senha: v.string(),
|
|
usarSSL: v.boolean(),
|
|
usarTLS: v.boolean(),
|
|
},
|
|
returns: v.union(
|
|
v.object({ sucesso: v.literal(true) }),
|
|
v.object({ sucesso: v.literal(false), erro: v.string() })
|
|
),
|
|
handler: async (ctx, args) => {
|
|
"use node";
|
|
const nodemailer = await import("nodemailer");
|
|
|
|
try {
|
|
// Validações básicas
|
|
if (!args.servidor || args.servidor.trim() === "") {
|
|
return {
|
|
sucesso: false as const,
|
|
erro: "Servidor SMTP não pode estar vazio",
|
|
};
|
|
}
|
|
|
|
if (args.porta < 1 || args.porta > 65535) {
|
|
return { sucesso: false as const, erro: "Porta inválida" };
|
|
}
|
|
|
|
const transporter = nodemailer.createTransport({
|
|
host: args.servidor,
|
|
port: args.porta,
|
|
secure: args.usarSSL,
|
|
auth: {
|
|
user: args.usuario,
|
|
pass: args.senha,
|
|
},
|
|
tls: {
|
|
rejectUnauthorized: false,
|
|
},
|
|
connectionTimeout: 10000, // 10 segundos
|
|
greetingTimeout: 10000,
|
|
socketTimeout: 10000,
|
|
});
|
|
|
|
// Verificar conexão
|
|
await transporter.verify();
|
|
|
|
return { sucesso: true as const };
|
|
} catch (error) {
|
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
return { sucesso: false as const, erro: errorMessage };
|
|
}
|
|
},
|
|
});
|
|
|
|
|