2weekmail/api/utils/sendMail.js
2025-03-23 13:14:14 +00:00

46 lines
1.5 KiB
JavaScript

const nodemailer = require('nodemailer');
require('dotenv').config();
// Create a transport configuration for Postfix
const transport = nodemailer.createTransport({
host: '172.18.0.3', // Use the Docker service name for Postfix
// or host: 'mail', // depending on your docker-compose service name
port: 587, // Default SMTP port
secure: false, // TLS is not required for local Postfix
auth: {
user: process.env.SMTP_USER, // Add your SMTP username
pass: process.env.SMTP_PASS // Add your SMTP password
},
tls: {
rejectUnauthorized: false // Allow self-signed certificates
}
});
/**
* Sends an email using the configured Postfix transport
* @param {string} to - Recipient email address
* @param {string} subject - Email subject
* @param {string} text - Plain text email content
* @param {string} html - HTML email content (optional)
* @returns {Promise} Result of sending the email
*/
async function sendMail(to, subject, text, html) {
try {
const mailOptions = {
from: process.env.SMTP_FROM,
to: to,
subject: subject,
text: text,
html: html || text
};
const info = await transport.sendMail(mailOptions);
console.log('Email sent successfully:', info.messageId);
return info;
} catch (error) {
console.error('Error sending email:', error);
throw error;
}
}
module.exports = sendMail;