68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
/* 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)
|
|
});
|
|
|
|
/**
|
|
* 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,
|
|
to,
|
|
subject,
|
|
text,
|
|
});
|
|
|
|
module.exports = gmail;
|
|
|