0.0.10 • Published 8 months ago

@cherry-code/mailer v0.0.10

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

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:
AtributoTipo de valor
transportersTransporterOption[]
templatesTemplatesOptions[]

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

    AtributoTipo de valor
    namestring
    transportSMTPTransport.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.

0.0.10

8 months ago

0.1.1

8 months ago

0.1.0

8 months ago

0.0.9

8 months ago

0.0.8

8 months ago

0.0.7

8 months ago

0.0.6

8 months ago

0.0.5

8 months ago

0.0.4

8 months ago

0.0.3

8 months ago

0.0.2

8 months ago

0.0.1

8 months ago