api/Utils/sendEmail.js
2025-05-07 15:32:19 +05:30

144 lines
4.2 KiB
JavaScript

// 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";
// Keep the original environment variable names
const transporter = createTransport({
host: process.env.SMPT_HOST,
port: parseInt(process.env.SMPT_PORT, 10), // Convert string to number
// service: process.env.SMPT_SERVICE,
auth: {
user: process.env.SMPT_MAIL,
pass: process.env.SMPT_PASSWORD,
},
// Add timeout to avoid hanging connections
connectionTimeout: 10000, // 10 seconds
// Log transport operations if not in production
debug: process.env.NODE_ENV !== "production",
});
const sendEmail = async (options) => {
try {
// Log attempt to help with debugging
console.log(`Attempting to send email to ${options.to}`);
// Use Promise-based API instead of callback for better error handling
const info = await transporter.sendMail(options);
console.log("Email sent successfully:", info.messageId);
return info;
} catch (error) {
// Enhanced error logging with more details
console.error("Failed to send email:");
console.error("Error name:", error.name);
console.error("Error message:", error.message);
console.error("Error code:", error.code);
if (error.response) {
console.error("SMTP Response:", error.response);
}
// Re-throw so the calling code knows the email failed
throw error;
}
};
export default sendEmail;
// Leave the MessageBird implementation unchanged
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);
});
};