# mail-template-sender

> Email - Template - Sender: Renders templates and sends email

Latest version **1.0.8** (published 2022-02-24) · MIT license · 13 weekly downloads

## Install

```sh
npm install mail-template-sender
pnpm add mail-template-sender
yarn add mail-template-sender
bun add mail-template-sender
```

## Health

**Score 5/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score; declining downloads.

## Facts

| | |
|---|---|
| Version | 1.0.8 |
| Published | 2022-02-24 |
| First published | 2021-10-30 |
| Weekly downloads | 13 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.10 |
| Dependencies | 1 |
| Unpacked size | 11.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Obisike Treasure |
| Maintainers | obisiket1 |
| Keywords | mail, email, sender |

## Links

- npm: https://www.npmjs.com/package/mail-template-sender
- Repository: https://github.com/Otrex/mail-template-sender
- Homepage: https://github.com/Otrex/mail-template-sender#readme
- Issues: https://github.com/Otrex/mail-template-sender/issues
- npm.io page: https://npm.io/package/mail-template-sender

## Dependencies (1)

- [ejs](https://npm.io/package/ejs.md) ^3.1.6

## Alternatives

- [@expo/fingerprint](https://npm.io/package/@expo/fingerprint.md) — 6.2M weekly downloads
- [@azure/monitor-opentelemetry-exporter](https://npm.io/package/@azure/monitor-opentelemetry-exporter.md) — 850.0K weekly downloads
- [@azure/monitor-opentelemetry](https://npm.io/package/@azure/monitor-opentelemetry.md) — 624.0K weekly downloads
- [@posthog/ai](https://npm.io/package/@posthog/ai.md) — 423.3K weekly downloads
- [fakefilter](https://npm.io/package/fakefilter.md) — 63.9K weekly downloads

## Recent versions

- 1.0.8 (latest) — 2022-02-24
- 1.0.7 — 2021-11-01
- 1.0.6 — 2021-10-30
- 1.0.5 — 2021-10-30
- 1.0.4 — 2021-10-30
- 1.0.3 — 2021-10-30
- 1.0.2 — 2021-10-30
- 1.0.1 — 2021-10-30

## README

# mail-template-sender


mail-template-sender is an event emitting, node.js package for providing a mail template sending capabilities with various options.

Note: By default, mail-template-sender uses `ejs` as its template engine

<!-- **[Follow me (@obisiket1) on Twitter!](https://twitter.com/intent/user?screen_name=obisiket1)** -->

- [Installation](#installation)
- [Usage](#usage)
  - [Simple Usage](#This-is-how-to-set-it-up-for-your-project)
  - [Configuring mail-template-sender](#Configuring-mail-template-sender)
  - [Adding more infomation to mail](#adding-data-to-mail)
- [Configuration Options](#configuration-options)
- [Implementing a different template engine](#Implement-a-template-engine)
- [License](#license)
- [Author](#author)

## Installation

This is a [Node.js](https://nodejs.org/en/) module available through the
[npm registry](https://www.npmjs.com/). Installation is done using the
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):

```sh
$ npm install mail-template-sender
```

or

```sh
$ yarn add mail-template-sender
```

## Usage

### Simple Usage

To use the default template engine, create a folder containing all your mails in `ejs`. Each mail file (template) should be suffixed with `.template.[ext]` eg. `./templates/verification.template.ejs`

The package identifies the template file using the `.template.ejs`

```javascript
const { MailerTemplateSetup, Mail } = require('mail-template-sender')
const { SendGridProvider } = require('mail-template-sender/providers')


// Adding SendGrid Provider
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(/* Send Grid Key */)
const sgProvider = new SendGridProvider(sgMail);


// Create MailerTemplateSetup
const mailerOptions = {
  provider: sgProvider,
  templateDir: path.join(__dirname, 'templates')
}
const mailer = MailerTemplateSetup.config(mailerOptions)


// Create mail object
const mailOptions = {
  template: 'verification',
  to: 'youremail@gmail.com',
  from: 'myemail@gmail.com',
  subject: 'From My Mailer',
}
const mail = new Mail(mailOptions)


// Add template data
mail.addData({ user: 'Bla' })


// Send mail
mailer.mailSender.send(mail)

```

### Configuring mail-template-sender

```javascript
const mailerOptions = {
  provider: /* A provider instance */,
  templateDir: /* Template folder path */,
  templateEngineExtension: /* This parameter is optional: this is the preffered template engine file extension */
}

const mailOptions = {
  template: /* template name */,
  to: /* email */,
  from: /* email */, // Use the email address or domain you verified above
  subject: /* preffered subject */,
}
```
<br><br/>
## MailTemplateSender

- `onError(cb)`: This method recieves a callback to handle what happens when a mail fails to send

  - `cb`: this must be a callback eg. `cb  = (error, mail) => {}`

------
- `onSent(cb)`: This method recieves a callback to handle what happens when a mail is sent successfully

  - `cb`: this must be a callback eg. `cb = (mail, result) => {}`

<br><br>
## Mail Class Methods

- `addData(data)`: This method is used to add the data that used inside the ejs template

  - `data`: this must be an Object
---
- `addSubject(data)`: Adds the subject to the mail(although it can be added during mail creation)

  - `data`: this must be string
----
- `addTo(data)`: Adds the reciever to the mail(although it can be added during mail creation)

  - `data`: this must be string
----
- `addFrom(data)`: Adds the sender to the mail(although it can be added during mail creation). Use the email address or domain you verified

  - `data`: this must be string

<br></br>
## Providers

The provides provided for you are

- `SendGridProvider`
- `NodeMailerProvider`

These are classes that can be used as provider. You can create you own provider by extending the `Provider` class

i.e

```js
const Provider = require("mail-template-sender/core/Provider");
class NewProvider extends Provider {
  // implement the send()
  // Note: The `body` and `mail` are defaultly provided
}
```

<br></br>
## Implementing A different template Engine

Coming Soon
<br></br>
<br></br>
## License

[MIT License](http://www.opensource.org/licenses/mit-license.php)

## Author

[Obisike Treasure](https://github.com/Otrex) ([obisiket@gmail.com](mailto:obisiket@gmail.com))

---
_Source: https://npm.io/package/mail-template-sender · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
