0.1.0 • Published 10 months ago

@cubos/mail-sender v0.1.0

Weekly downloads
-
License
-
Repository
-
Last release
10 months ago

@cubos/mail-sender

Este módulo ficará responsável por enviar emails de forma assíncrona.

No entrypoint do seu projeto, crie uma nova instancia do MailSender utilizando o provider de sua escolha:

Como Usar (com Nodemailer)

Podemos criar uma instancia e fazer o inject com a lib @cubos/utils:

import { MailSender, NodemailerProvider } from "@cubos/mail-sender";
import { create, inject } from "@cubos/utils";

inject([
  create(MailSender).using(NodemailerProvider).getDependency({transportUrl: "smtp://localhost:25"}),
]);

A instancia ficará disponível através do token 'MailSender'

const mailSender = container.resolve(MailSender);

mailSender.sendMail({
  to: ["johndoe@email.com"],
  from: "cliente@email.com",
  html: `<span>Html do email</span>`,
  subject: "Assunto do email",
  text: "texto do email",
  attachments: [
    {
      content: Buffer.from("conteudo");
      encoding: "base64";
      filename: "conteudo.txt";
      cid: "conteudo";
      contentType: "text/plain";
      headers: {
        key: "",
        value: ""
      };
      path: "path/to/file";
      raw: "raw";
    }
  ]
});

Porém é possível registrar tokens alternativos, o que é útil quando se faz necessário utilizar múltiplas instâncias:

import { NodemailerProvider, OutroProvider } from "@cubos/mail-sender";
import { create, inject } from "@cubos/utils";

inject([
  create(NodemailerProvider).using(NodemailerProvider).getDependency({transportUrl: "smtp://localhost:25"}),
  create(OutroProvider).using(OutroProvider).getDependency({outroProviderParam: "smtp://localhost:25"}),
]);

const nodemailerProvider = container.resolve(NodemailerProvider);

const outroProvider = container.resolve(OutroProvider);