Emails module for Mono
Installation
npm install --save mono-mail
Then, in your configuration file of your Mono application (example: conf/application.js
):
moduleexports = mono: modules: 'mono-mail'
Configuration
mono-mail
will use the mono.mail
property of your configuration (example: conf/development.js
):
moduleexports = mono: mail: exposeRoutes: true // enabled by default on development environment provider: // not required name: 'smtp || ses' ... //conf of the provider from: 'mono-mail@mono.io' //sender email adress (required) smtp: // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/924fafffc09cfeb0267573af2c847cdbfcfa464d/types/nodemailer-smtp-transport/index.d.ts#L47
Providers
Mono mail is currently supporting two providers to send your email:
- SMTP provider, using nodemailer with the nodemailer-smtp-transport transport
- SES Amazon, using nodemail with the nodemailer-ses-transport transport.
If no provider is provided the library will remove the /mails/send
route and the send method.
Usage
Mono mail is a mono module that using mjml and handlebar to generate and send awesome mails.
const monoMail =
Mono mail also expose some methods as REST routes
TODO: All rest calls need a session and a role that contain manageMail
action. This action is not added automatically.
Routes
The routes for preview and sending an email are only available on development environment or if the exposeRoutes
is set to true in the configuration of the module.
Test preview route
Run the mono server with mono-mail
NODE_ENV=test npx mono dev test/fixture/ok
Once the server launched go to this url
Roadmap
- Add attachment MINE Type in http
POST
route
Exposed routes
Method | URI | Query params | Body | Action |
---|---|---|---|---|
GET |
/mails/preview | path , data , pathType |
Return HTML Generated mail | |
POST |
/mails/send | pathType |
path , data , to , subject |
Send email |
Query params:
pathType
?: String (relative
orabsolute
) Relative from current mono instance dirname
Post/Query params:
path
: String. Path to the mail filedata
: Object. Data object that will be compiled by handlebar
Post params:
subject
: String (compiled with handlebar). Subject of the mailto
: String. Email adress of the sender
Methods
registerPartial
: Promise<void>
Register new partial template to be used inside mail template
Arguments:
partialName
: String. Partial name keypartialPathmail
: String. Path of the partial template
// Register new partialconst template = await monoMail
generate
: Promise<String>
Generate HTML template from mail object.
Arguments:
path
: String. Path to the mail filedata
: Object. Data object that will be compiled by handlebarsubject
: String (compiled with handlebar). Subject of the mail
// Generate template mail in HTMLconst template = await monoMail
send
: Promise<void>
Generate HTML template from mail object.
Arguments:
bcc
: String. Blind Carbon Copy emailto
: String. Recipient email addressattachments
: Array<{ filename, path, contentType }>. Attachment to the mail
// Send email to recipient@terrajs.io recipientconst template = await monoMail
Development / Contribution
See the contribution guidelines of this project.
License
MIT © gaetansenn