File

src/providers/email/email.provider.ts

Extends

NotificationProvider

Index

Methods

Methods

Async deliver
deliver(undefined: DeliverParams)
Inherited from NotificationProvider
Parameters :
Name Type Optional
DeliverParams No
Async getSendmailTransport
getSendmailTransport()
Returns : unknown
Async getSMTPTransport
getSMTPTransport()
Returns : unknown
import { Injectable } from "@nestjs/common";
import * as nodemailer from "nodemailer";
import {
  DeliverParams,
  NotificationProvider,
} from "../notification/notification.provider";

@Injectable()
export class EmailProvider extends NotificationProvider {
  async getSendmailTransport() {
    const transportOptions = {
      sendmail: true,
      logger: true,
    };
    return await nodemailer.createTransport(transportOptions);
  }

  async getSMTPTransport() {
    // created to be used later when we have mail server
    const smtpPort = Number(process.env.SMTP_PORT);
    return await nodemailer.createTransport({
      host: process.env.SMTP_HOST,
      port: smtpPort,
      secure: true ? smtpPort == 465 : false, // true for 465, false for other ports
      auth: {
        user: process.env.SMTP_USERNAME,
        pass: process.env.SMTP_PASSWORD,
      },
    });
  }

  async deliver({
    to,
    from,
    subject,
    body,
  }: DeliverParams): Promise<nodemailer.SentMessageInfo> {
    const transport = await this.getSMTPTransport();

    const message = {
      from: from ?? process.env.SMTP_SENDER,
      to: to,
      subject: subject,
      html: body,
    };
    return await transport.sendMail(message);
  }
}

results matching ""

    No results matching ""