https://github.com/zbitname/node-templated-mail
https://github.com/zbitname/node-templated-mail
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/zbitname/node-templated-mail
- Owner: zbitname
- Created: 2016-09-16T09:37:08.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2020-09-04T05:40:13.000Z (almost 6 years ago)
- Last Synced: 2025-02-26T21:43:46.109Z (over 1 year ago)
- Language: JavaScript
- Size: 6.84 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
##Templated email
Easy development/support and using email templates.
##Supports for other template engines
###Base usage
```javascript
var Mailer = require('templated-mail');
var TemplateProvider = require('templated-mail/providers/template/handlebars');
var mailer = new Mailer(new TemplateProvider(), {
host: 'smtp.example.com',
secure: true,
port: 465,
auth: {
user: 'login',
pass: 'AwesomePassword'
}
});
mailer
.send({
from: 'sender@example.com',
to: 'receiver@example.com',
subject: 'Very important'
}, 'template_name', {foo: 'bar'})
.then(function(out) {
// action on success
// `out` = response of server on your request
// maybe `out` contains info by error or description some troubles which block sending or receiving message for receiver
})
.catch(function(err) {
// ...
});
```
###Setting helpers
```javascript
var options = {
helpers: [Math.round] // helper with name `round`
};
var mailer = new Mailer(new TemplateProvider(options), {
host: 'smtp.example.com',
secure: true,
port: 465,
auth: {
user: 'login',
pass: 'AwesomePassword'
}
});
```
Function name is name of helper. You can define by named function. If you use ECMAScript 5 or older version you can use some polyfill (or hook) for `Function.name` property or upgrade nodejs version :)
###Setting templates
You can redefine function (`setHTMLTemplateGetter` and `setTextTemplateGetter`) for determine location requested template. If function for `text template` is not defined it will be taken stringified `html template` (without tags).
By default template path is relative by project "template".
Usage example:
```javascript
/*
Structure of your paths for templates:
/
└─ home
└─ user
└─ templates
└─ ${name}
└─ ${lang}.html.hbs
*/
var templatePath = '/home/user/templates';
var options = {
getHTMLtemplate(template) {
return `${templatePath}/${template.name}/${template.lang}.html.hbs`;
}
};
var mailer = new Mailer(new TemplateProvider(options), {
host: 'smtp.example.com',
secure: true,
port: 465,
auth: {
user: 'login',
pass: 'AwesomePassword'
}
});
```
##Command for test
```bash
node index.test.js --host=smtp.example.com --login=me@example.com --password=AwesomePassword --to=test@example.com --from=me@example.com
# or short version
node index.test.js -H smtp.example.com -L me@example.com -P AwesomePassword -T test@example.com -F me@example.com
```