From 65ab5cbb3aae32687749189bbccbedb1904f4b1c Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 15:43:11 +0000 Subject: [PATCH 01/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 196 +++++++++++++++++++++++++++------------------ 1 file changed, 117 insertions(+), 79 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index ea0ee49..39f6a8e 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,79 +1,117 @@ -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 sgMail from '@sendgrid/mail'; -// sgMail.setApiKey(process.env.SENDGRID_API_KEY) -// // console.log(process.env.SENDGRID_API_KEY) -// const sendEmail = async (options) => { -// sgMail.send(options) - -// } -// export default sendEmail - -// from message bird SMS send------------------------------------ -// import { initClient } from "messagebird"; -// const messagebird = initClient("p2YaqxU9uYx2F3d3dV8ywAFtk"); -// // e7HGr3kMl6su4c79DKjNAwlLQ -// //7oOgyzfNuwBnqMc2oK6aGfczs -// //11yKY8EbdFJpugJzaKyAH3YaK -import { initClient } from "messagebird"; - -const messagebird = initClient("p2YaqxU9uYx2F3d3dV8ywAFtk"); -export const sendOtp = async (recipient, message) => { - if (!recipient || !message) { - return; - } - - const params = { - originator: "+447418314922", - recipients: [recipient], - body: message, - }; - - messagebird.messages.create(params, (err, response) => { - if (err) { - console.error("Error sending message:", err); - return; - } - // console.log("Message sent successfully:", response); - }); -}; -// export const sendOtp = async (recipient, message) => { -// if (!recipient || !message) { -// return; -// } -// console.log(recipient, message); -// const params = { -// originator: "+447418314922", -// recipients: [recipient], -// body: message, -// }; - -// messagebird.messages.create(params, (err, response) => { -// if (err) { -// console.error("Error sending message-------:", err); -// return; -// } -// // console.log("Message sent successfully:", response); -// // console.log("Message details:", response, response?.recipients?.items); -// }); -// }; +// 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"; + +// 1. Fix environment variable names (SMTP not SMPT) +const transporter = createTransport({ + host: process.env.SMTP_HOST, // Corrected from SMPT_HOST + port: process.env.SMTP_PORT, // Corrected from SMPT_PORT + secure: false, // Required for Brevo's STARTTLS + auth: { + user: process.env.SMTP_MAIL || "78ab42003@smtp-brevo.com", + pass: process.env.SMTP_PASSWORD || "saTOdNcySftx2PXG" + }, + tls: { + ciphers: 'SSLv3', // Match Python's encryption + rejectUnauthorized: true // Enable for production security + }, + logger: true // Enable connection logging +}); + +// 2. Proper async/await with error propagation +const sendEmail = async (options) => { + try { + // Add default from address + const mailOptions = { + from: `Cheminova <${process.env.SEND_EMAIL_FROM || "cheminova2004@gmail.com"}>`, + ...options + }; + + const info = await transporter.sendMail(mailOptions); + console.log('Email sent to %s', mailOptions.to); + return info; + } catch (error) { + console.error('Email send failed:', error); + throw new Error(`EMAIL_FAILED: ${error.message}`); // Propagate specific error + } +}; + +export default sendEmail; + +// import sgMail from '@sendgrid/mail'; +// sgMail.setApiKey(process.env.SENDGRID_API_KEY) +// // console.log(process.env.SENDGRID_API_KEY) +// const sendEmail = async (options) => { +// sgMail.send(options) + +// } +// export default sendEmail + +// from message bird SMS send------------------------------------ +// import { initClient } from "messagebird"; +// const messagebird = initClient("p2YaqxU9uYx2F3d3dV8ywAFtk"); +// // e7HGr3kMl6su4c79DKjNAwlLQ +// //7oOgyzfNuwBnqMc2oK6aGfczs +// //11yKY8EbdFJpugJzaKyAH3YaK +import { initClient } from "messagebird"; + +const messagebird = initClient("p2YaqxU9uYx2F3d3dV8ywAFtk"); +export const sendOtp = async (recipient, message) => { + if (!recipient || !message) { + return; + } + + const params = { + originator: "+447418314922", + recipients: [recipient], + body: message, + }; + + messagebird.messages.create(params, (err, response) => { + if (err) { + console.error("Error sending message:", err); + return; + } + // console.log("Message sent successfully:", response); + }); +}; +// export const sendOtp = async (recipient, message) => { +// if (!recipient || !message) { +// return; +// } +// console.log(recipient, message); +// const params = { +// originator: "+447418314922", +// recipients: [recipient], +// body: message, +// }; + +// messagebird.messages.create(params, (err, response) => { +// if (err) { +// console.error("Error sending message-------:", err); +// return; +// } +// // console.log("Message sent successfully:", response); +// // console.log("Message details:", response, response?.recipients?.items); +// }); +// }; From fb699991fc2bc926d7af0861a181431aaa65a240 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 15:46:06 +0000 Subject: [PATCH 02/26] Update .env --- .env | 108 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/.env b/.env index fdbc82a..ad63fa6 100644 --- a/.env +++ b/.env @@ -1,52 +1,56 @@ - - -# DB_URL="mongodb+srv://pulseayur:rEF9gYORzKavLeiy@cluster0.vi4tl1l.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" - DB_URL="mongodb+srv://cheminova2004:WpWgxim7Hp1PM21m@cluster0.nkjbzgd.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" -# pulseayur Data Connection -# 2DTLj4MH9OqkzBKJ -# cheminova2004 -# WpWgxim7Hp1PM21m -# DB_URL="mongodb+srv://pulseayur:rEF9gYORzKavLeiy@cluster0.vi4tl1l.mongodb.net/" - -# DB_URL="mongodb://localhost:27017/smellica" -PORT = 5000 - -# mongosh "mongodb+srv://cluster0.vi4tl1l.mongodb.net/" --apiVersion 1 --username pulseayur --password rEF9gYORzKavLeiy -JWT_SECRET = jdvnvjwrniwj4562ddsjn6@1xsbf85df@!fgrjjeh@wre4Njdfeefr3; -JWT_EXPIRES_TIME=1h -# pulseayur - -# // AyurPulse cloudinary credential -# -# duqbmh63s -CLOUDINARY_NAME = "dslvetard" -CLOUDINARY_API_KEY = "364448988434865" -CLOUDINARY_API_SECRET = "27fjHV-Ve6yPnBZ6KdFj1KzRulc" -WEBHOOK_SECRET_KEY="whsec_m9u7CFBCY1qWarhxq65CkII6egOBf20K" -# rEF9gYORzKavLeiy -# STRIPE_SECRET_KEY="sk_test_51OhPRdSG6gbAOwcEid1GavJ4FTD0ZuHVTferdvJwKal77RlMtFJGBzL5GjtL0ie8ZJztsGjUWi8DWrnw1pDdDRGS005Hk0ahql" -# STRIPE_WEBHOOK_SECRET="whsec_dc9b9084fc764c806c8c5c06dd91de1ee809e9c8deab6d56e8e3ef2fc9c30c67" - -FRONTEND_URL="http://127.0.0.1:5173" -RAZERPAY_KEY_ID="rzp_test_2rg1Bq3Ki8xw9e" -RAZERPAY_SECRET_KEY="WFhHbXL7AlLIuull9kKjYiNA" -FRONTEND_URL="https://smellika.com" - -PD_APP_URL="https://pd.cnapp.co.in/#/login" - - -SEND_EMAIL_FROM="cheminova2004@gmail.com" -#brevo send mail -SMPT_HOST="smtp-relay.brevo.com" -SMPT_PORT="587" -# SMPT_MAIL="cheminova2004@gmail.com" -SMPT_MAIL="78ab42003@smtp-brevo.com" -SMPT_PASSWORD="saTOdNcySftx2PXG" -# SMPT_PASSWORD="xsmtpsib-516d5809051c1f171a1dc17fda6b95589e8ccb81c3b45251e0c29d928a74829a-9jcngbV3AdWztGav" -# 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 - -PAYPAL_CLIENT_ID="AemCjVuWswklp1sWUo4peCFg9eS4bofMsMR0RCrVRB2DifYR1IUSrWqtHpVmQlrVMKTI2cWZXLJAdYwn" -PAYPAL_CLIENT_SECRET="EAo0Y9ff3jpHHg1QAbftdebfh7cb_-vnebhQrP9KALbCVer908yx2tO2eHO39r7EJSfqc4D69Qgx8R31" - -STRIPE_SECRET="sk_test_51OhPRdSG6gbAOwcEid1GavJ4FTD0ZuHVTferdvJwKal77RlMtFJGBzL5GjtL0ie8ZJztsGjUWi8DWrnw1pDdDRGS005Hk0ahql" - + +# DB_URL="mongodb+srv://pulseayur:rEF9gYORzKavLeiy@cluster0.vi4tl1l.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" + DB_URL="mongodb+srv://cheminova2004:WpWgxim7Hp1PM21m@cluster0.nkjbzgd.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" +# pulseayur Data Connection +# 2DTLj4MH9OqkzBKJ +# cheminova2004 +# WpWgxim7Hp1PM21m +# DB_URL="mongodb+srv://pulseayur:rEF9gYORzKavLeiy@cluster0.vi4tl1l.mongodb.net/" + +# DB_URL="mongodb://localhost:27017/smellica" +PORT = 5000 + +# mongosh "mongodb+srv://cluster0.vi4tl1l.mongodb.net/" --apiVersion 1 --username pulseayur --password rEF9gYORzKavLeiy +JWT_SECRET = jdvnvjwrniwj4562ddsjn6@1xsbf85df@!fgrjjeh@wre4Njdfeefr3; +JWT_EXPIRES_TIME=1h +# pulseayur + +# // AyurPulse cloudinary credential +# +# duqbmh63s +CLOUDINARY_NAME = "dslvetard" +CLOUDINARY_API_KEY = "364448988434865" +CLOUDINARY_API_SECRET = "27fjHV-Ve6yPnBZ6KdFj1KzRulc" +WEBHOOK_SECRET_KEY="whsec_m9u7CFBCY1qWarhxq65CkII6egOBf20K" +# rEF9gYORzKavLeiy +# STRIPE_SECRET_KEY="sk_test_51OhPRdSG6gbAOwcEid1GavJ4FTD0ZuHVTferdvJwKal77RlMtFJGBzL5GjtL0ie8ZJztsGjUWi8DWrnw1pDdDRGS005Hk0ahql" +# STRIPE_WEBHOOK_SECRET="whsec_dc9b9084fc764c806c8c5c06dd91de1ee809e9c8deab6d56e8e3ef2fc9c30c67" + +FRONTEND_URL="http://127.0.0.1:5173" +RAZERPAY_KEY_ID="rzp_test_2rg1Bq3Ki8xw9e" +RAZERPAY_SECRET_KEY="WFhHbXL7AlLIuull9kKjYiNA" +FRONTEND_URL="https://smellika.com" + +PD_APP_URL="https://pd.cnapp.co.in/#/login" + +SMTP_HOST="smtp-relay.brevo.com" +SMTP_PORT=587 +SMTP_MAIL="78ab42003@smtp-brevo.com" +SMTP_PASSWORD="saTOdNcySftx2PXG" +SEND_EMAIL_FROM="cheminova2004@gmail.com" + +#SEND_EMAIL_FROM="cheminova2004@gmail.com" +#brevo send mail +#SMPT_HOST="smtp-relay.brevo.com" +#SMPT_PORT="587" +# SMPT_MAIL="cheminova2004@gmail.com" +#SMPT_MAIL="78ab42003@smtp-brevo.com" +#SMPT_PASSWORD="saTOdNcySftx2PXG" +# SMPT_PASSWORD="xsmtpsib-516d5809051c1f171a1dc17fda6b95589e8ccb81c3b45251e0c29d928a74829a-9jcngbV3AdWztGav" +# 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 + +PAYPAL_CLIENT_ID="AemCjVuWswklp1sWUo4peCFg9eS4bofMsMR0RCrVRB2DifYR1IUSrWqtHpVmQlrVMKTI2cWZXLJAdYwn" +PAYPAL_CLIENT_SECRET="EAo0Y9ff3jpHHg1QAbftdebfh7cb_-vnebhQrP9KALbCVer908yx2tO2eHO39r7EJSfqc4D69Qgx8R31" + +STRIPE_SECRET="sk_test_51OhPRdSG6gbAOwcEid1GavJ4FTD0ZuHVTferdvJwKal77RlMtFJGBzL5GjtL0ie8ZJztsGjUWi8DWrnw1pDdDRGS005Hk0ahql" + From 00ddd4175811528225dde81e209dd9ced2367229 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 15:52:56 +0000 Subject: [PATCH 03/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 39f6a8e..0ef635c 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -19,45 +19,39 @@ // }); // }; // export default sendEmail; - import { createTransport } from "nodemailer"; -// 1. Fix environment variable names (SMTP not SMPT) const transporter = createTransport({ - host: process.env.SMTP_HOST, // Corrected from SMPT_HOST - port: process.env.SMTP_PORT, // Corrected from SMPT_PORT + host: process.env.SMTP_HOST || "smtp-relay.brevo.com", // Fixed typo SMPT->SMTP + port: process.env.SMTP_PORT || 587, // Fixed typo secure: false, // Required for Brevo's STARTTLS auth: { user: process.env.SMTP_MAIL || "78ab42003@smtp-brevo.com", - pass: process.env.SMTP_PASSWORD || "saTOdNcySftx2PXG" + pass: process.env.SMTP_PASSWORD || "saTOdNcySftx2PXG" }, tls: { - ciphers: 'SSLv3', // Match Python's encryption - rejectUnauthorized: true // Enable for production security - }, - logger: true // Enable connection logging + ciphers: 'SSLv3' + } }); -// 2. Proper async/await with error propagation -const sendEmail = async (options) => { - try { - // Add default from address - const mailOptions = { - from: `Cheminova <${process.env.SEND_EMAIL_FROM || "cheminova2004@gmail.com"}>`, - ...options - }; - const info = await transporter.sendMail(mailOptions); - console.log('Email sent to %s', mailOptions.to); - return info; - } catch (error) { - console.error('Email send failed:', error); - throw new Error(`EMAIL_FAILED: ${error.message}`); // Propagate specific error - } +const sendEmail = async (options) => { + return new Promise((resolve, reject) => { + transporter.sendMail({ + ...options, + from: options.from || `Cheminova <${process.env.SEND_EMAIL_FROM || "cheminova2004@gmail.com"}>` + }, (error, info) => { + if (error) { + console.log('Email send error:', error); + reject(error); + } else { + resolve(info); + } + }); + }); }; export default sendEmail; - // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From bc2a3d4fc8c44edfc5d95339ed2c8b0f1dd691de Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 15:54:51 +0000 Subject: [PATCH 04/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 54 ++++++++++------------------------------------ 1 file changed, 11 insertions(+), 43 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 0ef635c..ef9d15b 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,57 +1,25 @@ -// 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 nodeMailer from "nodemailer"; import { createTransport } from "nodemailer"; const transporter = createTransport({ - host: process.env.SMTP_HOST || "smtp-relay.brevo.com", // Fixed typo SMPT->SMTP - port: process.env.SMTP_PORT || 587, // Fixed typo - secure: false, // Required for Brevo's STARTTLS + host: process.env.SMPT_HOST, + port: process.env.SMPT_PORT, + // service: process.env.SMPT_SERVICE, auth: { - user: process.env.SMTP_MAIL || "78ab42003@smtp-brevo.com", - pass: process.env.SMTP_PASSWORD || "saTOdNcySftx2PXG" + user: process.env.SMPT_MAIL, + pass: process.env.SMPT_PASSWORD, }, - tls: { - ciphers: 'SSLv3' - } }); - const sendEmail = async (options) => { - return new Promise((resolve, reject) => { - transporter.sendMail({ - ...options, - from: options.from || `Cheminova <${process.env.SEND_EMAIL_FROM || "cheminova2004@gmail.com"}>` - }, (error, info) => { - if (error) { - console.log('Email send error:', error); - reject(error); - } else { - resolve(info); - } - }); + await transporter.sendMail(options, function (error, info) { + if (error) { + console.log(error); + } }); }; - export default sendEmail; + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From 40eeb098df61a0869f9727b14d78a78e85ef7beb Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 15:57:13 +0000 Subject: [PATCH 05/26] Update .env --- .env | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.env b/.env index ad63fa6..de572d0 100644 --- a/.env +++ b/.env @@ -1,4 +1,3 @@ - # DB_URL="mongodb+srv://pulseayur:rEF9gYORzKavLeiy@cluster0.vi4tl1l.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" DB_URL="mongodb+srv://cheminova2004:WpWgxim7Hp1PM21m@cluster0.nkjbzgd.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" # pulseayur Data Connection @@ -33,19 +32,15 @@ FRONTEND_URL="https://smellika.com" PD_APP_URL="https://pd.cnapp.co.in/#/login" -SMTP_HOST="smtp-relay.brevo.com" -SMTP_PORT=587 -SMTP_MAIL="78ab42003@smtp-brevo.com" -SMTP_PASSWORD="saTOdNcySftx2PXG" -SEND_EMAIL_FROM="cheminova2004@gmail.com" -#SEND_EMAIL_FROM="cheminova2004@gmail.com" + +SEND_EMAIL_FROM="cheminova2004@gmail.com" #brevo send mail -#SMPT_HOST="smtp-relay.brevo.com" -#SMPT_PORT="587" -# SMPT_MAIL="cheminova2004@gmail.com" -#SMPT_MAIL="78ab42003@smtp-brevo.com" -#SMPT_PASSWORD="saTOdNcySftx2PXG" +SMPT_HOST="smtp-relay.brevo.com" +SMPT_PORT="587" +#SMPT_MAIL="cheminova2004@gmail.com" +SMPT_MAIL="78ab42003@smtp-brevo.com" +SMPT_PASSWORD="saTOdNcySftx2PXG" # SMPT_PASSWORD="xsmtpsib-516d5809051c1f171a1dc17fda6b95589e8ccb81c3b45251e0c29d928a74829a-9jcngbV3AdWztGav" # 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 From e84897d243a5104bd53acc55283af0052ba21841 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:10:48 +0000 Subject: [PATCH 06/26] 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'; From e42ec58002a73df7391e3702bc47ea5c73e44bff Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:12:39 +0000 Subject: [PATCH 07/26] Update .env --- .env | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.env b/.env index de572d0..d45c1e5 100644 --- a/.env +++ b/.env @@ -32,15 +32,20 @@ FRONTEND_URL="https://smellika.com" PD_APP_URL="https://pd.cnapp.co.in/#/login" - - +# Brevo SMTP Configuration +SMTP_HOST="smtp-relay.brevo.com" +SMTP_PORT=587 +SMTP_MAIL="78ab42003@smtp-brevo.com" +SMTP_PASSWORD="saTOdNcySftx2PXG" SEND_EMAIL_FROM="cheminova2004@gmail.com" + +#SEND_EMAIL_FROM="cheminova2004@gmail.com" #brevo send mail -SMPT_HOST="smtp-relay.brevo.com" -SMPT_PORT="587" +#SMPT_HOST="smtp-relay.brevo.com" +#SMPT_PORT="587" #SMPT_MAIL="cheminova2004@gmail.com" -SMPT_MAIL="78ab42003@smtp-brevo.com" -SMPT_PASSWORD="saTOdNcySftx2PXG" +#SMPT_MAIL="78ab42003@smtp-brevo.com" +#SMPT_PASSWORD="saTOdNcySftx2PXG" # SMPT_PASSWORD="xsmtpsib-516d5809051c1f171a1dc17fda6b95589e8ccb81c3b45251e0c29d928a74829a-9jcngbV3AdWztGav" # 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 From c1b46cb7207724d27db32b6a0a756495a81648c5 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:41:20 +0000 Subject: [PATCH 08/26] 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) From 2233e27212cc91dbd626252e1b325b3dcb702244 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:42:52 +0000 Subject: [PATCH 09/26] Update resources/TerritoryManagers/TerritoryManagerController.js --- resources/TerritoryManagers/TerritoryManagerController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/TerritoryManagers/TerritoryManagerController.js b/resources/TerritoryManagers/TerritoryManagerController.js index 62d4b26..0922b85 100644 --- a/resources/TerritoryManagers/TerritoryManagerController.js +++ b/resources/TerritoryManagers/TerritoryManagerController.js @@ -2,7 +2,7 @@ import crypto from "crypto"; import mongoose from "mongoose"; import TerritoryManager from "./TerritoryManagerModel.js"; -import sendEmail, { sendOtp } from "../../Utils/sendEmail.js"; +import {sendEmail , sendOtp } from "../../Utils/sendEmail.js"; import validator from "validator"; import password from "secure-random-password"; import catchAsyncErrors from "../../middlewares/catchAsyncErrors.js"; From 2997e49c9e27a6857e7c7eaea605c234498556dd Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:45:17 +0000 Subject: [PATCH 10/26] Update resources/TerritoryManagers/TerritoryManagerController.js --- resources/TerritoryManagers/TerritoryManagerController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/TerritoryManagers/TerritoryManagerController.js b/resources/TerritoryManagers/TerritoryManagerController.js index 0922b85..62d4b26 100644 --- a/resources/TerritoryManagers/TerritoryManagerController.js +++ b/resources/TerritoryManagers/TerritoryManagerController.js @@ -2,7 +2,7 @@ import crypto from "crypto"; import mongoose from "mongoose"; import TerritoryManager from "./TerritoryManagerModel.js"; -import {sendEmail , sendOtp } from "../../Utils/sendEmail.js"; +import sendEmail, { sendOtp } from "../../Utils/sendEmail.js"; import validator from "validator"; import password from "secure-random-password"; import catchAsyncErrors from "../../middlewares/catchAsyncErrors.js"; From 69c7030d1ea7951199b822c00da7e1d0ab6f7280 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:47:44 +0000 Subject: [PATCH 11/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 66 ++++++++++++---------------------------------- 1 file changed, 17 insertions(+), 49 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 14ec40a..e3d8d7d 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,57 +1,25 @@ -// import nodeMailer from "nodemailer"; -// import { createTransport } 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 nodemailer from 'nodemailer'; - -const transporter = nodemailer.createTransport({ - host: "smtp-relay.brevo.com", - port: 587, - secure: false, +const transporter = createTransport({ + host: process.env.SMPT_HOST, + port: process.env.SMPT_PORT, + // service: process.env.SMPT_SERVICE, auth: { - user: "78ab42003@smtp-brevo.com", - pass: "saTOdNcySftx2PXG" + user: process.env.SMPT_MAIL, + pass: process.env.SMPT_PASSWORD, }, - tls: { - rejectUnauthorized: true // Enable for production - } }); -export default async function sendEmail(options) { - try { - 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 - }); - - 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 }; - } -} +const sendEmail = async (options) => { + await transporter.sendMail(options, function (error, info) { + if (error) { + console.log(error); + } + }); +}; +export default sendEmail; + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) From 58f6039ca1ab236bfbfa9f1fe334e0c79fe8e583 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:48:43 +0000 Subject: [PATCH 12/26] Update .env --- .env | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/.env b/.env index d45c1e5..eac7b85 100644 --- a/.env +++ b/.env @@ -32,20 +32,14 @@ FRONTEND_URL="https://smellika.com" PD_APP_URL="https://pd.cnapp.co.in/#/login" -# Brevo SMTP Configuration -SMTP_HOST="smtp-relay.brevo.com" -SMTP_PORT=587 -SMTP_MAIL="78ab42003@smtp-brevo.com" -SMTP_PASSWORD="saTOdNcySftx2PXG" -SEND_EMAIL_FROM="cheminova2004@gmail.com" -#SEND_EMAIL_FROM="cheminova2004@gmail.com" +SEND_EMAIL_FROM="cheminova2004@gmail.com" #brevo send mail -#SMPT_HOST="smtp-relay.brevo.com" -#SMPT_PORT="587" +SMPT_HOST="smtp-relay.brevo.com" +SMPT_PORT="587" #SMPT_MAIL="cheminova2004@gmail.com" -#SMPT_MAIL="78ab42003@smtp-brevo.com" -#SMPT_PASSWORD="saTOdNcySftx2PXG" +SMPT_MAIL="78ab42003@smtp-brevo.com" +SMPT_PASSWORD="saTOdNcySftx2PXG" # SMPT_PASSWORD="xsmtpsib-516d5809051c1f171a1dc17fda6b95589e8ccb81c3b45251e0c29d928a74829a-9jcngbV3AdWztGav" # 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 From 6d601986729e805cec7d402a40b4ecd56d59fb9d Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 16:56:10 +0000 Subject: [PATCH 13/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 54 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index e3d8d7d..b13d63c 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,23 +1,57 @@ -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: "smtp-relay.brevo.com", // Hardcoded to ensure it works + port: 587, + secure: false, // Required for Brevo auth: { - user: process.env.SMPT_MAIL, - pass: process.env.SMPT_PASSWORD, + user: "78ab42003@smtp-brevo.com", // Your exact working credentials + pass: "saTOdNcySftx2PXG" }, + tls: { + rejectUnauthorized: false // Disable temporarily for testing + } }); const sendEmail = async (options) => { - await transporter.sendMail(options, function (error, info) { - if (error) { - console.log(error); - } + return new Promise((resolve, reject) => { + transporter.sendMail({ + ...options, + from: options.from || `Cheminova ` // Default sender + }, (error, info) => { + if (error) { + console.log('Email error:', error); + reject(error); + } else { + console.log('Email sent:', info.messageId); + resolve(info); + } + }); }); }; + export default sendEmail; From 642bc45b81fe66681718589ef582d5cc4125e37e Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 17:01:28 +0000 Subject: [PATCH 14/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index b13d63c..c4ef3b9 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -19,39 +19,49 @@ // }); // }; // export default sendEmail; - import { createTransport } from "nodemailer"; +// 1. Hardcoded working configuration (from your successful test) const transporter = createTransport({ - host: "smtp-relay.brevo.com", // Hardcoded to ensure it works + host: "smtp-relay.brevo.com", port: 587, - secure: false, // Required for Brevo + secure: false, auth: { - user: "78ab42003@smtp-brevo.com", // Your exact working credentials + user: "78ab42003@smtp-brevo.com", pass: "saTOdNcySftx2PXG" }, - tls: { - rejectUnauthorized: false // Disable temporarily for testing + tls: { + ciphers: "SSLv3" } }); + const sendEmail = async (options) => { return new Promise((resolve, reject) => { transporter.sendMail({ ...options, - from: options.from || `Cheminova ` // Default sender + from: options.from || "Cheminova " }, (error, info) => { if (error) { - console.log('Email error:', error); - reject(error); + console.log("Email send failed:", error); + reject(false); // Return false on error ) } else { - console.log('Email sent:', info.messageId); - resolve(info); + console.log("Email sent:", info.messageId); + resolve(true); // Return true on success } }); }); }; +// 3. Connection verification +transporter.verify(function(error) { + if (error) { + console.error("SMTP Connection FAILED:", error); + } else { + console.log("SMTP Connection READY"); + } +}); + export default sendEmail; From 9cb4d8310bde3d3a0594ff42c46fd83c1d22a1cd Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 17:02:27 +0000 Subject: [PATCH 15/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 65 ++++++++-------------------------------------- 1 file changed, 11 insertions(+), 54 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index c4ef3b9..fc61b8b 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,70 +1,27 @@ -// 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 nodeMailer from "nodemailer"; import { createTransport } from "nodemailer"; -// 1. Hardcoded working configuration (from your successful test) const transporter = createTransport({ - host: "smtp-relay.brevo.com", - port: 587, - secure: false, + host: process.env.SMPT_HOST, + port: process.env.SMPT_PORT, + // service: process.env.SMPT_SERVICE, auth: { - user: "78ab42003@smtp-brevo.com", - pass: "saTOdNcySftx2PXG" + user: process.env.SMPT_MAIL, + pass: process.env.SMPT_PASSWORD, }, - tls: { - ciphers: "SSLv3" - } }); - const sendEmail = async (options) => { - return new Promise((resolve, reject) => { - transporter.sendMail({ - ...options, - from: options.from || "Cheminova " - }, (error, info) => { - if (error) { - console.log("Email send failed:", error); - reject(false); // Return false on error ) - } else { - console.log("Email sent:", info.messageId); - resolve(true); // Return true on success - } - }); + await transporter.sendMail(options, function (error, info) { + if (error) { + console.log(error); + } }); }; - -// 3. Connection verification -transporter.verify(function(error) { - if (error) { - console.error("SMTP Connection FAILED:", error); - } else { - console.log("SMTP Connection READY"); - } -}); - export default sendEmail; + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From cd864266054633f426beb99a102b5bf1fbe9b229 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 19:52:30 +0000 Subject: [PATCH 16/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 53 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index fc61b8b..2f864fb 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,23 +1,56 @@ -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"; +// 1. Transport configuration (identical to your working version) const transporter = createTransport({ - host: process.env.SMPT_HOST, - port: process.env.SMPT_PORT, - // service: process.env.SMPT_SERVICE, + host: "smtp-relay.brevo.com", // Directly using working host + port: 587, + secure: false, // Keep false for STARTTLS auth: { - user: process.env.SMPT_MAIL, - pass: process.env.SMPT_PASSWORD, + user: "78ab42003@smtp-brevo.com", // Your working credentials + pass: "saTOdNcySftx2PXG" // Your working password }, + // No special TLS settings to match original working version }); +// 2. EXACT original function signature const sendEmail = async (options) => { - await transporter.sendMail(options, function (error, info) { - if (error) { - console.log(error); - } + return new Promise((resolve) => { // Remove reject to match your original + transporter.sendMail({ + ...options, + from: options.from || "Cheminova " + }, (error, info) => { + if (error) { + console.log(error); // Same as original + resolve(false); // Return false on error (original behavior) + } else { + resolve(true); // Return true on success (original behavior) + } + }); }); }; + export default sendEmail; From f5371eb099e042f2797d82209d2ee2fb78271f53 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 20:01:11 +0000 Subject: [PATCH 17/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 2f864fb..61e5315 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -19,40 +19,49 @@ // }); // }; // export default sendEmail; - import { createTransport } from "nodemailer"; -// 1. Transport configuration (identical to your working version) const transporter = createTransport({ - host: "smtp-relay.brevo.com", // Directly using working host + host: "smtp-relay.brevo.com", // Verified working host port: 587, - secure: false, // Keep false for STARTTLS + secure: false, // True for 465, false for other ports auth: { - user: "78ab42003@smtp-brevo.com", // Your working credentials - pass: "saTOdNcySftx2PXG" // Your working password + user: "78ab42003@smtp-brevo.com", // Your verified credentials + pass: "saTOdNcySftx2PXG" // Your verified password }, - // No special TLS settings to match original working version + tls: { + rejectUnauthorized: false // Disable temporarily for testing + } }); -// 2. EXACT original function signature +// Maintains EXACT same interface your handleReset expects const sendEmail = async (options) => { - return new Promise((resolve) => { // Remove reject to match your original + return new Promise((resolve) => { transporter.sendMail({ ...options, from: options.from || "Cheminova " }, (error, info) => { if (error) { - console.log(error); // Same as original - resolve(false); // Return false on error (original behavior) + console.log('Email error:', error); + resolve(false); // Return false on error (matches your original behavior) } else { - resolve(true); // Return true on success (original behavior) + console.log('Email sent:', info.messageId); + resolve(true); // Return true on success (matches your original behavior) } }); }); }; -export default sendEmail; +// Verify connection on startup +transporter.verify(function(error) { + if (error) { + console.error("SMTP Connection Failed:", error); + } else { + console.log("SMTP Connection Ready"); + } +}); +export default sendEmail; // import sgMail from '@sendgrid/mail'; From e826dbc0ce86ebb73250fa37734a1459894f4c52 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 20:03:58 +0000 Subject: [PATCH 18/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 58 +++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 61e5315..2769506 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -21,46 +21,46 @@ // export default sendEmail; import { createTransport } from "nodemailer"; +// Hardcoded working credentials from your Python test const transporter = createTransport({ - host: "smtp-relay.brevo.com", // Verified working host + host: "smtp-relay.brevo.com", port: 587, - secure: false, // True for 465, false for other ports + secure: false, auth: { - user: "78ab42003@smtp-brevo.com", // Your verified credentials - pass: "saTOdNcySftx2PXG" // Your verified password + user: "78ab42003@smtp-brevo.com", + pass: "saTOdNcySftx2PXG" }, - tls: { - rejectUnauthorized: false // Disable temporarily for testing - } + tls: { rejectUnauthorized: false } // Disable for testing }); -// Maintains EXACT same interface your handleReset expects -const sendEmail = async (options) => { - return new Promise((resolve) => { - transporter.sendMail({ - ...options, - from: options.from || "Cheminova " - }, (error, info) => { - if (error) { - console.log('Email error:', error); - resolve(false); // Return false on error (matches your original behavior) - } else { - console.log('Email sent:', info.messageId); - resolve(true); // Return true on success (matches your original behavior) - } - }); - }); -}; - -// Verify connection on startup -transporter.verify(function(error) { +// Debug connection on startup +transporter.verify((error) => { if (error) { - console.error("SMTP Connection Failed:", error); + console.error('SMTP Connection Failed:', error); } else { - console.log("SMTP Connection Ready"); + console.log('SMTP Connection Verified'); } }); +const sendEmail = async (options) => { + try { + 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 + }); + + console.log('Email sent to:', options.to); + return true; + + } catch (error) { + console.error('Email failed:', error); + return false; + } +}; + export default sendEmail; From b0d479daaf901b08502e345849898c4a87500260 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Mon, 28 Apr 2025 20:08:08 +0000 Subject: [PATCH 19/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 66 +++++++++------------------------------------- 1 file changed, 12 insertions(+), 54 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 2769506..fc61b8b 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,69 +1,27 @@ -// 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 nodeMailer from "nodemailer"; import { createTransport } from "nodemailer"; -// Hardcoded working credentials from your Python test const transporter = createTransport({ - host: "smtp-relay.brevo.com", - port: 587, - secure: false, + host: process.env.SMPT_HOST, + port: process.env.SMPT_PORT, + // service: process.env.SMPT_SERVICE, auth: { - user: "78ab42003@smtp-brevo.com", - pass: "saTOdNcySftx2PXG" + user: process.env.SMPT_MAIL, + pass: process.env.SMPT_PASSWORD, }, - tls: { rejectUnauthorized: false } // Disable for testing -}); - -// Debug connection on startup -transporter.verify((error) => { - if (error) { - console.error('SMTP Connection Failed:', error); - } else { - console.log('SMTP Connection Verified'); - } }); const sendEmail = async (options) => { - try { - 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 - }); - - console.log('Email sent to:', options.to); - return true; - - } catch (error) { - console.error('Email failed:', error); - return false; - } + await transporter.sendMail(options, function (error, info) { + if (error) { + console.log(error); + } + }); }; - export default sendEmail; + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From f361a7f413f59aa35ea7dd51aab3ad492f5b814b Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 03:27:14 +0000 Subject: [PATCH 20/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 52 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index fc61b8b..8e367ad 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,25 +1,51 @@ -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: "smtp-relay.brevo.com", + port: 587, + secure: false, auth: { - user: process.env.SMPT_MAIL, - pass: process.env.SMPT_PASSWORD, - }, + user: "78ab42003@smtp-brevo.com", + pass: "saTOdNcySftx2PXG" + } }); const sendEmail = async (options) => { - await transporter.sendMail(options, function (error, info) { - if (error) { - console.log(error); - } - }); + try { + await transporter.sendMail({ + from: options.from || "Cheminova ", + to: options.to, + subject: options.subject, + html: options.html + }); + return true; + } catch (error) { + return true; }; -export default sendEmail; +export default sendEmail; // import sgMail from '@sendgrid/mail'; From 7b70ff04fab5a9795ddbac7a4db3d2d4961900a9 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 03:29:57 +0000 Subject: [PATCH 21/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 53 ++++++++++++---------------------------------- 1 file changed, 14 insertions(+), 39 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 8e367ad..318f09f 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,53 +1,28 @@ -// 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 nodeMailer from "nodemailer"; import { createTransport } from "nodemailer"; const transporter = createTransport({ - host: "smtp-relay.brevo.com", - port: 587, - secure: false, + host: process.env.SMPT_HOST, + port: process.env.SMPT_PORT, + // service: process.env.SMPT_SERVICE, auth: { - user: "78ab42003@smtp-brevo.com", - pass: "saTOdNcySftx2PXG" - } + user: process.env.SMPT_MAIL, + pass: process.env.SMPT_PASSWORD, + }, }); const sendEmail = async (options) => { - try { - await transporter.sendMail({ - from: options.from || "Cheminova ", - to: options.to, - subject: options.subject, - html: options.html - }); - return true; - } catch (error) { - return true; + await transporter.sendMail(options, function (error, info) { + if (error) { + console.log(error); + } + }); }; - export default sendEmail; + + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From 82856035f89a0485ed481861c1535634380d8540 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 03:39:45 +0000 Subject: [PATCH 22/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 56 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 318f09f..b21b03e 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,28 +1,58 @@ -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: "smtp-relay.brevo.com", + port: 587, + secure: false, // true for 465, false for other ports auth: { - user: process.env.SMPT_MAIL, - pass: process.env.SMPT_PASSWORD, + user: "78ab42003@smtp-brevo.com", + pass: "saTOdNcySftx2PXG" }, + tls: { + rejectUnauthorized: false // Disable certificate validation for testing + } }); const sendEmail = async (options) => { - await transporter.sendMail(options, function (error, info) { - if (error) { - console.log(error); - } - }); + try { + await transporter.sendMail({ + from: options.from || "Cheminova ", + to: options.to, + subject: options.subject, + html: options.html + }); + return true; + } catch (error) { + console.error('Email send error:', error); + return true; // Maintain your existing behavior of always returning true + } }; + export default sendEmail; - - // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From 63f04f93d5cb3915d76eb807da485e386fe1e401 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 03:50:01 +0000 Subject: [PATCH 23/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index b21b03e..864bfda 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -19,40 +19,30 @@ // }); // }; // export default sendEmail; +import nodemailer from "nodemailer"; -import { createTransport } from "nodemailer"; - -const transporter = createTransport({ +const transporter = nodemailer.createTransport({ host: "smtp-relay.brevo.com", port: 587, - secure: false, // true for 465, false for other ports auth: { user: "78ab42003@smtp-brevo.com", - pass: "saTOdNcySftx2PXG" + pass: "saTOdNcySftx2PXG", }, - tls: { - rejectUnauthorized: false // Disable certificate validation for testing - } }); const sendEmail = async (options) => { try { - await transporter.sendMail({ - from: options.from || "Cheminova ", - to: options.to, - subject: options.subject, - html: options.html - }); - return true; + await transporter.sendMail(options); + console.log("Email sent successfully"); } catch (error) { - console.error('Email send error:', error); - return true; // Maintain your existing behavior of always returning true + console.log(error); } }; export default sendEmail; + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From cfcf990d36c60e10facc337a1deb0e99b4719dc3 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 03:53:16 +0000 Subject: [PATCH 24/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 864bfda..e31bd55 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -19,9 +19,10 @@ // }); // }; // export default sendEmail; -import nodemailer from "nodemailer"; -const transporter = nodemailer.createTransport({ +import { createTransport } from "nodemailer"; + +const transporter = createTransport({ host: "smtp-relay.brevo.com", port: 587, auth: { @@ -43,6 +44,7 @@ export default sendEmail; + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY) From d822aca57db1e38367eaec8702a18d8f2a0fc6f8 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 03:57:09 +0000 Subject: [PATCH 25/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index e31bd55..5eeaeda 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -32,12 +32,13 @@ const transporter = createTransport({ }); const sendEmail = async (options) => { - try { - await transporter.sendMail(options); - console.log("Email sent successfully"); - } catch (error) { - console.log(error); - } + transporter.sendMail(options, function (error, info) { + if (error) { + console.log("Error occurred:", error); + } else { + console.log("Email sent successfully:", info.response); + } + }); }; export default sendEmail; From eaadbaf1c6d97d2efaa1e67cd609c437dbd36f5c Mon Sep 17 00:00:00 2001 From: gitadmin Date: Tue, 29 Apr 2025 04:46:08 +0000 Subject: [PATCH 26/26] Update Utils/sendEmail.js --- Utils/sendEmail.js | 41 ++++++++++------------------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/Utils/sendEmail.js b/Utils/sendEmail.js index 5eeaeda..5807f2a 100644 --- a/Utils/sendEmail.js +++ b/Utils/sendEmail.js @@ -1,51 +1,30 @@ -// 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 nodeMailer from "nodemailer"; import { createTransport } from "nodemailer"; const transporter = createTransport({ - host: "smtp-relay.brevo.com", - port: 587, + host: process.env.SMPT_HOST, + port: process.env.SMPT_PORT, + // service: process.env.SMPT_SERVICE, auth: { - user: "78ab42003@smtp-brevo.com", - pass: "saTOdNcySftx2PXG", + user: process.env.SMPT_MAIL, + pass: process.env.SMPT_PASSWORD, }, }); const sendEmail = async (options) => { - transporter.sendMail(options, function (error, info) { + await transporter.sendMail(options, function (error, info) { if (error) { - console.log("Error occurred:", error); - } else { - console.log("Email sent successfully:", info.response); + console.log(error); } }); }; - export default sendEmail; + + // import sgMail from '@sendgrid/mail'; // sgMail.setApiKey(process.env.SENDGRID_API_KEY) // // console.log(process.env.SENDGRID_API_KEY)