Giter Site home page Giter Site logo

flicker71 / nodemailer-react Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mathieutu/nodemailer-react

0.0 0.0 0.0 190 KB

A simple but powerfull Nodemailer wrapper to send email with React template.

License: MIT License

TypeScript 61.76% JavaScript 38.24%

nodemailer-react's Introduction

Nodemailer React

This package aims to simplify the use of Nodemailer, along with React templating.

Installation

yarn add nodemailer-react

This package has nodemailer, react-dom and react as Peer Dependencies, so you'll need to install them if you don't already have them:

yarn add nodemailer react-dom react

Usage

You can find a full example in the example folder, or see the tests to have more details.

Configure your SMTP transport

An object that defines your connection data. See https://nodemailer.com/smtp/#general-options for details.

const transport = {
  host: 'smtp.example.com',
  secure: true,
  auth: { user: 'username', pass: 'password' },
}

Configure your defaults

An object that is going to be merged into every message object. This allows you to specify shared options, for example to set the same from address for every message. See https://nodemailer.com/message/#common-fields

const defaults = {
  from: "[email protected]",
}

Create Email Components

They are basically functions which can take an object of props in parameter and return an object with :

  • The subject of the email, as string.
  • The body of the email, as JSX (ReactElement).

The have the following type:

type Email = (props: object) => ({
  subject: string;
  body: ReactElement;
})

Example:

export const WelcomeEmail = ({ firstName }) => ({
  subject: `๐Ÿ‘‹ ${firstName}`,
  body: (
    <div>
      <p>Hello {firstName}!</p>
      <p>Hope you'll enjoy the package!</p>
    </div>
  )
})

export const PasswordEmail = /* ... */
export const ReminderEmail = /* ... */

Instantiate the Mailer function.

It takes your transport and defaults configuration as the first parameter, and a record of your emails components as the second.

import { Mailer } from 'nodemailer-react'

export const mailer = Mailer(
  { transport, defaults },
  { WelcomeEmail, PasswordEmail, ReminderEmail }
)

TIP: you can directly pass a transporter from nodemailer's createTransport method as first argument if you prefer.

TIP 2: you can alias your emails easily : { welcome: WelcomeEmail, pwd: PasswordEmail, ... }.

Enjoy!

Send mails in your application, by passing:

  • Your email template name: key of the email in the record you've provided to the Mailer.
  • The props of your email component.
  • The options of the email (to, from, attachments, etc.). See https://nodemailer.com/message/#common-fields
mailer.send('WelcomeEmail', { firstName: 'Mathieu' }, {
  to: '[email protected]'
})

Typescript

Everything is fully typed, and you should have full autocompletion and type checking, within the options, but also components and props attached to them in send method.

However, as Nodemailer does not publish its own types, be sure to install them from DefinitelyTyped repo:

yarn add -D @types/nodemailer

License

This nodemailer-react package is an open-sourced software licensed under the MIT license.

Contributing

Issues and PRs are obviously welcomed and encouraged, both for new features and documentation.

nodemailer-react's People

Contributors

mathieutu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.