Using Email Queues

To handle high volumes of emails or to ensure reliable delivery, consider using an email queue. Libraries like Bull or Agenda can help with this.

Example using Bull:

Install Bull and Redis:

npm install bull

Set up a Bull queue:

const Bull = require('bull');
const nodemailer = require('nodemailer');
const redis = require('redis');

// Create a Redis client
const redisClient = redis.createClient();

// Create a Bull queue
const emailQueue = new Bull('email', { redis: redisClient });

// Create a transporter object
const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: process.env.EMAIL_USER,
        pass: process.env.EMAIL_PASS
    }
});

// Process email jobs
emailQueue.process(async (job) => {
    const { to, subject, text } = job.data;
    await transporter.sendMail({ from: process.env.EMAIL_USER, to, subject, text });
});

// Add a job to the queue
emailQueue.add({
    to: '[email protected]',
    subject: 'Queued Email',
    text: 'This email was sent using a Bull queue.'
});

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *