{"id":45602,"library":"nodemailer-sequelize-queue","title":"Nodemailer Sequelize Queue","description":"Queue emails for delayed processing using Nodemailer for delivery, Sequelize for database persistence, and node-cron for scheduling. Current version 0.1.6 (stable, low release cadence). Supports MySQL dialect by default, accepts an existing Sequelize instance or credentials. Provides automatic retry with configurable max attempts. Differentiator: integrates three libraries into a simple queue workflow without external brokers like Redis.","status":"active","version":"0.1.6","language":"javascript","source_language":"en","source_url":"https://github.com/alexsanteenodev/nodemailer-sequelize-queue","tags":["javascript","sequelize","nodemailer","node-cron","mail","queue","mail queue","schedule","typescript"],"install":[{"cmd":"npm install nodemailer-sequelize-queue","lang":"bash","label":"npm"},{"cmd":"yarn add nodemailer-sequelize-queue","lang":"bash","label":"yarn"},{"cmd":"pnpm add nodemailer-sequelize-queue","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core email sending engine.","package":"nodemailer","optional":false},{"reason":"ORM for database queue storage; dialect modules must be installed separately.","package":"sequelize","optional":false},{"reason":"Scheduler for cron-based mail processing.","package":"node-cron","optional":false}],"imports":[{"note":"Default export (ESM). CommonJS destructuring will yield undefined.","wrong":"const { NodemailerSequelizeQueue } = require('nodemailer-sequelize-queue')","symbol":"NodemailerSequelizeQueue","correct":"import NodemailerSequelizeQueue from 'nodemailer-sequelize-queue'"},{"note":"In CommonJS, use .default to get the constructor.","wrong":"const NodemailerSequelizeQueue = require('nodemailer-sequelize-queue')","symbol":"NodemailerSequelizeQueue","correct":"const NodemailerSequelizeQueue = require('nodemailer-sequelize-queue').default"},{"note":"Named import will fail; it's a default export.","wrong":"import { NodemailerSequelizeQueue } from 'nodemailer-sequelize-queue'","symbol":"NodemailerSequelizeQueue","correct":"import NodemailerSequelizeQueue from 'nodemailer-sequelize-queue'"}],"quickstart":{"code":"import NodemailerSequelizeQueue from 'nodemailer-sequelize-queue';\n\nconst dbCredentials = {\n  config: {\n    username: process.env.DB_USER ?? '',\n    password: process.env.DB_PASS ?? '',\n    database: process.env.DB_NAME ?? '',\n    host: process.env.DB_HOST ?? 'localhost',\n    dialect: 'mysql',\n  },\n};\n\nconst smtpCreds = {\n  host: process.env.SMTP_HOST ?? 'smtp.example.com',\n  port: Number(process.env.SMTP_PORT) || 465,\n};\n\nconst queue = new NodemailerSequelizeQueue(dbCredentials, smtpCreds, {\n  expression: '*/5 * * * *',\n  maxAttempts: 3,\n});\n\nqueue.initScheduler();\n\nqueue.queueMail({\n  email_from: 'sender@example.com',\n  email_to: 'recipient@example.com',\n  subject: 'Test',\n  html: '<p>Hello</p>',\n});","lang":"typescript","description":"Initializes the queue with database and SMTP credentials, starts the cron scheduler, and queues an email."},"warnings":[{"fix":"Pin version in package.json and test upgrades thoroughly.","message":"Package version 0.x is pre-1.0; API may break without major version bump.","severity":"gotcha","affected_versions":">=0.0.0 <1.0.0"},{"fix":"Install the appropriate driver: `npm install mysql2` for MySQL.","message":"Must install Sequelize dialect driver separately (e.g., mysql2).","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Call initScheduler() once at application startup, not per email.","message":"queue.initScheduler() should be called only once; multiple calls start duplicate cron jobs.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use standard cron syntax (e.g., '*/1 * * * *' for every minute).","message":"The expression option is a cron expression (not a Nodemailer expression). The README typo may cause confusion.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use require('nodemailer-sequelize-queue').default.","message":"When using CommonJS require(), must use .default to get the constructor.","severity":"broken","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.1.6':25 'accept':35 'attempt':48 'automat':43 'broker':60 'cadenc':29 'configur':46 'credenti':41 'cron':20,68 'current':23 'databas':15 'default':34 'delay':7 'deliveri':12 'dialect':32 'differenti':49 'email':5 'exist':37 'extern':59 'instanc':39 'integr':50 'javascript':63 'librari':52 'like':61 'low':27 'mail':69,71 'max':47 'mysql':31 'node':19,67 'node-cron':18,66 'nodemail':1,10,65 'persist':16 'process':8 'provid':42 'queue':3,4,56,70,72 'redi':62 'releas':28 'retri':44 'schedul':22,73 'sequel':2,13,38,64 'simpl':55 'stabl':26 'support':30 'three':51 'typescript':74 'use':9 'version':24 'without':58 'workflow':57","created_at":"2026-06-07T12:55:49.062370+00:00","updated_at":"2026-06-07T12:55:49.062370+00:00","problems":[{"fix":"Use const NodemailerSequelizeQueue = require('nodemailer-sequelize-queue').default;","cause":"Using CommonJS require() without .default.","error":"TypeError: NodemailerSequelizeQueue is not a constructor"},{"fix":"Install mysql2: npm install mysql2 and set dialect: 'mysql2' in config.","cause":"Outdated MySQL client or missing authentication plugin.","error":"SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client"},{"fix":"Install the appropriate driver: npm install mysql2 (for MySQL).","cause":"Missing dialect driver.","error":"Error: Cannot find module 'mysql2'"},{"fix":"Use import NodemailerSequelizeQueue from 'nodemailer-sequelize-queue'.","cause":"Using wrong import (e.g., named import instead of default).","error":"TypeError: queue.initScheduler is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/alexsanteenodev/nodemailer-sequelize-queue#readme","github":"https://github.com/alexsanteenodev/nodemailer-sequelize-queue","docs":null,"changelog":null,"pypi":null,"npm":"nodemailer-sequelize-queue","openapi_spec":null,"status_page":null,"smithery":null,"categories":["messaging"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}