0.1.0 • Published 10 months ago
@cubos/mail-sender v0.1.0
@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);