Cambio a código en archivo server/helper/gmail.js para envío de correos con Relay SMTP

This commit is contained in:
2025-04-30 11:49:47 -06:00
parent cfd2202dfe
commit b2ce341ef1
+10 -51
View File
@@ -1,60 +1,19 @@
/* require('../config/config');
const send = require('gmail-send')({
user: process.env.GMAIL,
pass: process.env.GMAILPASSWORD,
});
const gmail = (subject, to, text) => {
return new Promise((resolve, reject) => {
send({ subject, to, text }, (error, result, fullResult) => {
if (error) reject(error);
resolve(result);
});
});
// return "envio de correo"
};
module.exports = gmail;
*/
// src/utils/gmail.js (o donde prefieras)
// gmail.js (o el nombre que prefieras)
require('../config/config'); // mantiene tu carga de variables
const nodemailer = require('nodemailer');
// Transporter con pooling y throttling
const transporter = nodemailer.createTransport({
host: 'smtp.gmail.com', // cambia a smtp-relay.gmail.com si usas Workspace
port: 587,
secure: false, // STARTTLS en puerto 587
requireTLS: true,
auth: {
user: process.env.USER_GMAIL, // ejemplo: tu-cuenta@gmail.com
pass: process.env.PASS_GMAIL, // App-Password de 16 caracteres
},
pool: true, // reutiliza la conexión
maxConnections: 1, // una conexión simultánea
maxMessages: 100, // reabre después de 100 envíos
rateDelta: 2000, // ventana de 2 s
rateLimit: 1, // máx. 1 mensaje por ventana (≈ 0.5 msg/s)
host: 'smtp-relay.gmail.com',
port: 587,
secure: false,
requireTLS: true,
name: 'acatlan.unam.mx',
pool: true,
maxConnections: 1,
maxMessages: 100,
rateDelta: 2000,
rateLimit: 1,
});
/**
* Envía un correo (API idéntica a tu versión anterior).
* @param {string} subject Asunto
* @param {string|string[]} to Destinatario(s)
* @param {string} text Cuerpo en texto plano
* @return {Promise<object>} info de nodemailer
*/
const gmail = (subject, to, text) =>
transporter.sendMail({
from: process.env.USER_GMAIL,