# mail-service

> A simple nodejs module to send rich html emails easily using angular templates and automatic image embedding.

Latest version **1.1.0** (published 2017-11-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install mail-service
pnpm add mail-service
yarn add mail-service
bun add mail-service
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2017-11-09 |
| First published | 2016-06-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 6 |
| Known vulnerabilities | 0 (+14 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | FDIM |
| Maintainers | fdim |
| Keywords | mail, mail-service |

## Links

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

## Dependencies (6)

- [async](https://npm.io/package/async.md) ^1.5.2
- [juice](https://npm.io/package/juice.md) ^2.0.0
- [extend](https://npm.io/package/extend.md) ^3.0.0
- [striptags](https://npm.io/package/striptags.md) ^2.1.1
- [nodemailer](https://npm.io/package/nodemailer.md) ^2.4.2
- [angular-template](https://npm.io/package/angular-template.md) ^2.0.9

## 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.1.0 (latest) — 2017-11-09
- 1.0.5 — 2016-06-28
- 1.0.4 — 2016-06-27
- 1.0.3 — 2016-06-27
- 1.0.2 — 2016-06-27
- 1.0.1 — 2016-06-24
- 1.0.0 — 2016-06-24
- 0.0.1 — 2016-06-22

## README

# mail-service
A simple nodejs module that enables you to send rich html emails with inline css and embedded images.
All you need is a html template with angular like expressions (yes, ng-repeat will work too, even in plain text template).

# install
As simple as "npm install mail-service"

# usage

````
var MailService = require('mail-service');

var test = new MailService(<simply passed to nodemailer.createTransport>, <default mail options, like `from` address>, <angular template options>);
// or
var test = new MailService();
test.init(<simply passed to nodemailer.createTransport>, <default mail options, like `from` address>, <angular template options>); // meant to be initialized from outside and use environment variables

test.send(<mail options>, callback);
````


# example

```
// services/mailer.js
var MailService = require('mail-service');

function MyMailer(){
  MailService.call(this);
  // optional, just in case you need to fetch image from db
  this.fileHandler = asyncFileHandler;
  // used by regexp to do global replacement
  this.placeholderOptions = {regexp:/\*\|(.+?)\|\*/g, defaultValueSeparator:'?', defaultValue:''};
  // you can also post process template, default one replaces mailchimp like tags (*|FNAME|*,*|URL?no link|*), provided via placeholders template regexp option
  this.postProcessTemplate = postProcessTemplate;
}
function postProcessTemplate(tpl, templateOptions, options, callback) {
  callback(null, tpl);
}
function asyncFileHandler(filePath, templateOptions, callback){
  // gets called once per <img src="<path>"/> to read image file.
  // default one automatically reads images using basedir relative to the template or from imagesDir provided on template level.
}
MyMailer.prototype = Object.create(MailService.prototype);

module.exports = new MyMailer();


MyMailer.prototype.sendForgotPasswordMail = function(user, data, callback){
  this.send({
    to: user.email,
    subject: "Reset password link",
    textTemplate: {
      path:__dirname+'/../emails/forgot-password.txt',
      data: data,
      placeholders:{fname:'Test'}
    },
    htmlTemplate: {
      path:__dirname+'/../emails/forgot-password.html',
      data: data
    }
  }, callback);
};

// server.js
var mailer = require('./services/mailer.js');
mailer.init("smpt://usr:1234353@localhost:489");

// some-route.js
var mailer = require('../services/mailer.js');
mailer.sendForgotPasswordMail({email:'test@example.com'},{name:"Test"}, function(err, finalOptions){});
```

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