2.1.0 • Published 3 years ago
@janiscommerce/mail v2.1.0
A package to handle emails
Installation
npm install @janiscommerce/mail
Available methods
The methods that you can use to create the email:
setTo [String|Array]
(required if body is set): This method sets the recipients email addressessetTemplateCode [String|Array]
(required if body is not set): This method sets the template code of the emailsetBody [String]
(required if templateCode is not set): This method sets the body of the email.setData [Object]
: This method sets the data to replace variables in recipients, subject and email body.setSubject [String]
(required if templateCode is not set): This method sets the subject of the email.setCC [String|Array]
: This method sets the CC of the email.setBCC [String|Array]
: This method sets the BCC of the email.setReplyTo [String]
: This method sets the Reply To of the email.setEntity [String|Number]
: This method sets the entity related to the email.setEntityId [String|Number]
: This method sets the entity ID related to the email.setUserCreated [String]
: This method sets the User ID related to the user that triggered the mail.
ClientCode injection
The package uses the Janis Mailing Service, so it needs the clientCode
to be able to use it's API. You have two ways to do so:
- Instanciate the package in a sessioned class using
this.session.getSessionInstance(Mail)
(see @janiscommerce/api-session) - Setting the
clientCode
using themail.setClientCode('clientCode')
method
Errors
The errors are informed with a MailError
.
This object has a code that can be useful for a correct error handling or debugging.
The codes are the following:
Code | Description |
---|---|
1 | Required field missing |
2 | Invalid field type |
3 | Microservice call Error |
Examples
Client injection
With clientCode
const Mail = require('@janiscommerce/mail');
const mail = new Mail();
await mail.setTemplateCode('template-code')
.setClientCode('client-code')
.send();
With session
const Mail = require('@janiscommerce/mail');
const API = require('@janiscommerce/api');
class ApiExample extends API {
async process() {
const mail = this.session.getSessionInstance(Mail);
try {
await mail.setTemplateCode('template-code').send();
} catch(error) {
console.log(error);
}
}
}
module.exports = ApiExample;
Templated emails
Basic usage
const Mail = require('@janiscommerce/mail');
const mail = new Mail();
await mail.setClientCode('client-code')
.setTemplateCode('template-code')
.send();
Complete Usage
const Mail = require('@janiscommerce/mail');
const mail = new Mail();
await mail.setClientCode('client-code')
.setTemplateCode('template-code')
.setTo('example@example.com') // Merges with template data
.setCC('mail@example.com') // Merges with template data
.setBCC(['mail@example.com']) // Merges with template data
.setReplyTo(['mail@example.com']) // Merges with template data
.setEntity('order')
.setEntityId('5de565c07de99000110dcdef')
.setUserCreated('6de565c07de99000110dcdef')
.setData({
someField: 'someFieldValue',
otherField: 'otherFieldValue'
})
.send();
Raw emails
Basic usage
const Mail = require('@janiscommerce/mail');
const mail = new Mail();
await mail.setClientCode('client-code')
.setBody('client-code')
.setSubject('subject of the email')
.setTo('example@example.com')
.send();
Complete Usage
const Mail = require('@janiscommerce/mail');
const mail = new Mail();
await mail.setClientCode('client-code')
.setTo('some-client')
.setCC('mail@example.com')
.setBCC(['mail@example.com'])
.setReplyTo(['mail@example.com'])
.setSubject('Email Subject')
.setEntity('order')
.setEntityId('5de565c07de99000110dcdef')
.setUserCreated('6de565c07de99000110dcdef')
.setBody('body of email')
.setData({
someField: 'someFieldValue',
otherField: 'otherFieldValue'
})
.send();