From e84897d243a5104bd53acc55283af0052ba21841 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:10:48 +0000 Subject: [PATCH] Update Utils/sendEmail.js --- Utils/sendEmail.js | 76 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index ef9d15b..62b2fe2 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,23 +1,77 @@ -import nodeMailer from "nodemailer"; +// import nodeMailer from "nodemailer"; +// import { createTransport } from "nodemailer"; + +// const transporter = createTransport({ +// host: process.env.SMPT_HOST, +// port: process.env.SMPT_PORT, +// // service: process.env.SMPT_SERVICE, +// auth: { +// user: process.env.SMPT_MAIL, +// pass: process.env.SMPT_PASSWORD, +// }, +// }); + +// const sendEmail = async (options) => { +// await transporter.sendMail(options, function (error, info) { +// if (error) { +// console.log(error); +// } +// }); +// }; +// export default sendEmail; import { createTransport } from "nodemailer"; const transporter = createTransport({ - host: process.env.SMPT_HOST, - port: process.env.SMPT_PORT, - // service: process.env.SMPT_SERVICE, + host: process.env.SMTP_HOST || "smtp-relay.brevo.com", + port: process.env.SMTP_PORT || 587, + secure: false, // STARTTLS auth: { - user: process.env.SMPT_MAIL, - pass: process.env.SMPT_PASSWORD, + user: process.env.SMTP_MAIL || "78ab42003@smtp-brevo.com", + pass: process.env.SMTP_PASSWORD || "saTOdNcySftx2PXG" }, + tls: { + ciphers: 'SSLv3', + rejectUnauthorized: true + }, + logger: process.env.NODE_ENV === 'development' }); + const sendEmail = async (options) => { - await transporter.sendMail(options, function (error, info) { - if (error) { - console.log(error); - } - }); + const mailOptions = { + from: options.from || `Cheminova <${process.env.SEND_EMAIL_FROM || "cheminova2004@gmail.com"}>`, + to: options.to, + subject: options.subject, + html: options.html, + text: options.text || convertHtmlToText(options.html), // Auto plaintext fallback + attachments: options.attachments || [] + }; + + try { + const info = await transporter.sendMail(mailOptions); + console.log(`Email sent to ${mailOptions.to} (${options.subject})`); + return info; + } catch (error) { + console.error('Email failed:', { + to: mailOptions.to, + error: error.message + }); + throw error; + } }; + +// Helper for plaintext fallback +function convertHtmlToText(html) { + return html + ? html.replace(/<[^>]*>/g, '').replace(/\n{3,}/g, '\n\n') + : ''; +} + +// Verify connection on startup +transporter.verify() + .then(() => console.log('SMTP connection established')) + .catch(err => console.error('SMTP connection failed:', err)); + export default sendEmail; // import sgMail from '@sendgrid/mail';