0.0.16 • Published 10 months ago

@cherry-code/mailer v0.0.16

Weekly downloads
-
License
MIT
Repository
-
Last release
10 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

    • renderEngineViewString(template: string, data?: any) compilar uma string ejs para html

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" });

await transport.renderEngiveViewString("<h1>Olá <%= name %>!!!", {
  name: "Eduardo",
});
// 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.11

11 months ago

0.0.12

11 months ago

0.0.13

10 months ago

0.0.14

10 months ago

0.0.16

10 months ago

0.0.10

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago