dry-node
Version:
Initialiseur de structure Node Express typée et modulaire
108 lines (87 loc) • 3.35 kB
JavaScript
// const nodemailer = require("nodemailer");
// /**
// * email, subject, message
// * @param options
// * @returns {Promise<*>}
// * @constructor
// */
// const DrySendEmailSimple = async (options) => {
// try {
// console.log("je suis là 0 !!");
// const transporter = nodemailer.createTransport({
// host: process.env.SMTP_HOST,
// port: process.env.SMTP_PORT,
// secure: process.env.SMTP_SECURE,
// auth: {
// user: process.env.SMTP_EMAIL,
// pass: process.env.SMTP_PASSWORD,
// },
// tls: {
// rejectUnauthorized: false, // Permet les certificats auto-signés
// },
// });
// console.log("je suis là milieu !!");
// // Définissez les options de l'email
// // Envoyez l'email
// const message = {
// from: `${process.env.SMTP_NAME} <${process.env.SMTP_EMAIL}>`,
// to: options.email,
// subject: options.subject,
// text: options.message,
// html: options.message,
// context: {
// title: options.code + " " + options.password,
// },
// };
// console.log("je suis là 1 !!");
// const info = await transporter.sendMail(message);
// console.log("Message sent: %s", info.messageId);
// } catch (err) {
// return err;
// }
// };
// module.exports = DrySendEmailSimple;
const nodemailer = require("nodemailer");
/**
* Envoie un e-mail simple à l'adresse fournie
* @param {Object} options - Contient les champs : email, subject, message
* @returns {Promise<Object>} - Résultat de l’envoi ou erreur
*/
const DrySendEmailSimple = async (options) => {
try {
// ⚠️ Vérification minimale des champs obligatoires
if (!options?.email || !options?.subject || !options?.message) {
throw new Error("email, subject et message sont requis !");
}
console.log("🔧 Initialisation du transporteur SMTP...");
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: Number(process.env.SMTP_PORT), // Assurez-vous que PORT est un nombre
secure: process.env.SMTP_SECURE === "true", // conversion explicite en booléen
auth: {
user: process.env.SMTP_EMAIL,
pass: process.env.SMTP_PASSWORD,
},
tls: {
rejectUnauthorized: false, // utile si certificat auto-signé
},
});
console.log("📦 Préparation du message...", process.env.SMTP_NAME);
const message = {
from: process.env.SMTP_NAME + `<${process.env.SMTP_EMAIL}>`, // Ex: 'CongoTelecom <mail.congotelecom@mail.com>'
to: options.email,
subject: options.subject,
text: options.message, // contenu brut
html: options.message, // contenu HTML si applicable
};
//${process.env.SMTP_NAME}
console.log("🚀 Envoi de l'email...");
const info = await transporter.sendMail(message);
console.log(`✅ Email envoyé avec succès : ${info.messageId}`);
return info; // tu peux retourner info pour log ou suivi
} catch (err) {
console.error("❌ Erreur lors de l'envoi de l'email :", err.message);
return err; // utile pour l’appeler via un service et afficher une alerte
}
};
module.exports = DrySendEmailSimple;