LLaraNode
Packages

Mail Package

The @lara-node/mail package provides a multi-driver email system with fluent Mailable classes.

Mail Package

The @lara-node/mail package provides a multi-driver email system with fluent Mailable classes.

Installation

pnpm add @lara-node/mail @lara-node/core nodemailer

Overview

Features include:

  • Multiple drivers -- SMTP, Log, Array, Failover
  • Mailable classes for building emails
  • Fluent API for composing emails
  • Queue support for async sending
  • HTML and text templates

Quick Start

Create a Mailable

import { Mailable } from "@lara-node/mail";

class WelcomeMail extends Mailable {
  constructor(private user: User) {
    super();
  }

  build() {
    return this.to(this.user.email)
      .subject("Welcome to LaraNode!")
      .view("emails.welcome", { user: this.user });
  }
}

Send Email

import { Mail, sendMail } from "@lara-node/mail";

// Using facade
await Mail.to("[email protected]").send(new WelcomeMail(user));

// Using helper
await sendMail(new WelcomeMail(user));

Key Exports

ExportDescription
MailMail facade
MailManagerMail manager
MailerFluent mailer
MailableBase mailable class
sendMail()Send helper
queueMail()Queue helper

Configuration

// config/mail.config.ts
export default {
  driver: process.env.MAIL_DRIVER || "log",
  from: {
    address: process.env.MAIL_FROM_ADDRESS,
    name: process.env.MAIL_FROM_NAME,
  },
  smtp: {
    host: process.env.MAIL_HOST,
    port: parseInt(process.env.MAIL_PORT || "587"),
    secure: false,
    auth: {
      user: process.env.MAIL_USERNAME,
      pass: process.env.MAIL_PASSWORD,
    },
  },
};

Next Steps