@cherry-code/mailer v0.0.10
Sobre a biblioteca
Focado em facilitar e deixar o código mais bonito, em vez de mandar uma string de html, utilizando as tecnologias front-end React, vue, ejs, assim evitando qualquer erro de escopo. Biblioteca focado com os desenvolvimentos dentro da CherryCode com intuito de facilitar os desenvolvedores.
yarn add @cherry-code/mailer
Como inicializar
Para inicializar seu primeito "Hello World", precisamos instancia a Mailer da biblioteca e dentro dele vai existir as seguintes opções:
- Dentro das opções de Client constructor:
Atributo | Tipo de valor |
---|---|
transporters | TransporterOption[] |
templates | TemplatesOptions[] |
a opção transporters é herdada de nodemailer no atributo chamado transport é você pode informar opção de uma criação de transport igual do exemplo do nodemailer em createTransport
Mailer.options.transporters OPCIONAL
Atributo Tipo de valor name string transport SMTPTransport.Options Mailer.options.templates
Caso seja path, ira renderizar para ejs, caso seja render vai renderizar para React JSX | Atributo | Tipo de valor | | -------- | -------------------------------------------------------------- | | name | string | | path? | string | | render? | ReactElement |
OBS: Para conseguir renderizar um componente em react é preciso utilizar babel para transpilar.
Funções
addTemplate(name: string, template: TemplatesOptions )
- Função para adicionar mais um template de acordo com a render no atributo template utiliza mesmo tipo no new Mailer() TemplatesOptions.
start()
- Caso inicialize o transport na constructor de Mailer, execute essa fução para ser criada os transport
addTransport(name: string, transport: SMTPTransport.Options )
- Função para adicionar um novo transport de nodemailer.
send(options: Mail.Options)
- A mesma utilidade de sendMail de nodemailer
getTransport(name: string)
- Recuperar um transport especifico
dentro de transport você usa as funções de renderização:
renderEngineView(name: string, data?: any) renderizar para ejs
renderReact(name: string) renderizar para react
Exemplos de inicialização:
import { Mailer } from "@cherry-code/mailer";
const app = new Mailer();
// estou adicionando um transport (não é preciso usar start caso use o add)
app.addTransport("transportNotify", {
host: "sandbox.smtp.mailtrap.io",
port: 465,
secure: false,
auth: {
user: "edummelo",
pass: "senhadeseuemail",
},
});
// aqui estou adicionando um template que vai renderizar como ejs
app.addTemplate("eduardoTemplate", { path: "./views/email.ejs" });
// estou recuperando um transport especifico
const transport = app.transporter.getTransport("transportNotify");
// como escolhi template que renderiza em ejs irei utilizar a função renderEngineView
await transport.renderEngineView("eduardoTemplate", { value: "Hello World" });
// após renderizar (é preciso aguardar a renderização você execute o send)
transport.send({
from: "<CherryMailer>",
to: "mailer@cherrycode.com.br",
subject: "Cherry code libs",
});
Caso seja em react JSX
import React from "react";
app.addTemplate("eduardoTemplate", { render: <p>Eduardo melo</p> });
await transport.renderReact("eduardoTemplate");
transport.send({
from: "<CherryMailer>",
to: "mailer@cherrycode.com.br",
subject: "Cherry code libs",
});
Caso esteja em aplicação lado client ou que já transpila utilizando presets react , caso contrario utilize babel para transpilar
EX: npx babel test/index.js --out-file test/app.js
Esta biblioteca é para fins de trabalhos pessoais, mas você pode usar, caso tenha alguma sugestão ou algo a melhorar só abrir um PR ou um issue que irei avaliar.