From c1b46cb7207724d27db32b6a0a756495a81648c5 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:41:20 +0000 Subject: [PATCH] Update Utils/sendEmail.js --- Utils/sendEmail.js | 67 ++++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 44 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 62b2fe2..14ec40a 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -19,61 +19,40 @@ // }); // }; // export default sendEmail; -import { createTransport } from "nodemailer"; +import nodemailer from 'nodemailer'; -const transporter = createTransport({ - host: process.env.SMTP_HOST || "smtp-relay.brevo.com", - port: process.env.SMTP_PORT || 587, - secure: false, // STARTTLS +const transporter = nodemailer.createTransport({ + host: "smtp-relay.brevo.com", + port: 587, + secure: false, auth: { - user: process.env.SMTP_MAIL || "78ab42003@smtp-brevo.com", - pass: process.env.SMTP_PASSWORD || "saTOdNcySftx2PXG" + user: "78ab42003@smtp-brevo.com", + pass: "saTOdNcySftx2PXG" }, tls: { - ciphers: 'SSLv3', - rejectUnauthorized: true - }, - logger: process.env.NODE_ENV === 'development' + rejectUnauthorized: true // Enable for production + } }); - -const sendEmail = async (options) => { - 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 || [] - }; - +export default async function sendEmail(options) { 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 + const info = await transporter.sendMail({ + from: options.from || `Cheminova `, + to: options.to, + subject: options.subject, + html: options.html, + text: options.text || options.html.replace(/<[^>]*>/g, '') // Auto plaintext }); - throw error; + + console.log('Email sent to', options.to); + return { success: true, messageId: info.messageId }; + + } catch (error) { + console.error('Email failed:', error.message); + return { success: false, error: error.message }; } -}; - -// 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'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY)