Please welcome the new Mailjet official NodeJS API wrapper!
Mailjet is an Email Service Provider (ESP). Visit the website and get comfortable!
Every code examples can be find on the Mailjet Documentation
(Please refer to the Mailjet Documentation Repository to contribute to the documentation examples)
first, create a project folder
mkdir mailjet-project && cd $_
if you want to get a global installation, you can add -g
npm install node-mailjet
To authenticate, go get your API key, and API secret here, open your favorite text editor and import the mailjet module
var Mailjet = require('node-mailjet').connect('api key', 'api secret');Additional connection options may be passed as the third argument. These values are supported:
proxyUrl: HTTP proxy URL to send the email requests throughtimeout: API request timeout in milliseconds
Example:
var Mailjet = require('node-mailjet').connect('api key', 'api secret', {
proxyUrl: process.env.https_proxy,
timeout: 60000 // 1 minute
});The proxy URL is passed directly to superagent-proxy.
echo 'export MJ_APIKEY_PUBLIC=MY_API_KEY' >> ~/.zshrc
echo 'export MJ_APIKEY_PRIVATE=MY_API_SECRET' >> ~/.zshrc
source ~/.zshrc
replace zshrc with bash_profile if you are simply using bash
var apiKey = process.env.MJ_APIKEY_PUBLIC,
apiSecret = process.env.MJ_APIKEY_PRIVATE;// GET resource
var user = Mailjet.get('user');
// POST resource
var sender = Mailjet.post('sender');user.request(function (error, response, body) {
if (error)
console.log ('Oops, something went wrong ' + response.statusCode);
else
console.log (body);
});user.request()
.then(function (result) {
// do something with the result
// result structure is {response: {...}, body: {...}}
})
.catch(function (reason) {
// handle the rejection reason
console.log(reason.statusCode)
})sender.request({ Email: 'mr@mailjet.com' })
.then(handleData)
.catch(handleError);var getContacts = Mailjet.get('contact');
getContacts.request({Limit: 3}, handleContacts);getContacts.id(2).request(handleSingleContact)var postContact = Mailjet.post('contact');
postContact.action('managemanycontacts').request({
ContactLists: MyContactListsArray,
Contacts: MyContactsArray,
}, handlePostResponse)var sendEmail = Mailjet.post('send');
var emailData = {
'FromEmail': 'my@email.com',
'FromName': 'My Name',
'Subject': 'Test with the NodeJS Mailjet wrapper',
'Text-part': 'Hello NodeJs !',
'Recipients': [{'Email': 'roger@smith.com'}],
'Attachments': [{
"Content-Type": "text-plain",
"Filename": "test.txt",
"Content": "VGhpcyBpcyB5b3VyIGF0dGFjaGVkIGZpbGUhISEK",
}],
}
sendEmail
.request(emailData)
.then(handlePostResponse)
.catch(handleError);var emailData = {
'FromEmail': 'pilot@mailjet.com',
'FromName': 'Pilot',
'Subject': 'Coucou Mailjet2',
'Text-part': 'Hello World2',
'Recipients': [{'Email': 'passenger@mailjet.com'}],
};
var emailData2 = {
'FromEmail': 'pilot@mailjet.com',
'FromName': 'Pilot',
'Subject': 'Coucou Mailjet2',
'Text-part': 'This is another Email',
'Recipients': [{'Email': 'passenger@mailjet.com'}],
};
sendEmail
.request(emailData)
.then(handleData)
.catch(handleError);
sendEmail
.request(emailData2)
.then(handleData)
.catch(handleError);var mailjet = require ('./mailjet-client')
.connect(process.env.MJ_APIKEY_PUBLIC, process.env.MJ_APIKEY_PRIVATE)
function handleError (err) {
throw new Error(err.ErrorMessage);
}
function newContact (email) {
mailjet.post('contact')
.request({Email: email})
.catch(handleError);
}
function testEmail (text) {
email = {};
email['FromName'] = 'Your Name';
email['FromEmail'] = 'Your Sender Address';
email['Subject'] = 'Test Email';
email['Recipients'] = [{Email: 'Your email'}];
email['Text-Part'] = text;
mailjet.post('send')
.request(email)
.catch(handleError);
}
testEmail('Hello World!');npm testThis version modifies the way to construct the Client or the calls. We add the possibility to add an array with parameters on both Client creation and API call (please, note that each of these parameters are preset and are not mandatory in the creation or the call) :
Properties of the $settings (Client constructor) and $options (API call function)
url (Default: api.mailjet.com) : domain name of the API version (Default: v3) : API version (only working for Mailjet API V3 +) perform_api_call (Default: true) : turns on(true) / off the call to the API secured (Default: true) : turns on(true) / off the use of 'https'
// The third argument (the object) is not mandatory, as each of its 4 keys.
const mailjet = require ('apiv3')
.connect(process.env.MJ_APIKEY_PUBLIC, process.env.MJ_APIKEY_PRIVATE, {
'url': 'api.mailjet.com', // default is the API url
'version': 'v3', // default is '/v3'
'secured': true, // default is a boolean true
'perform_api_call': true // used for tests. default is true
})
// the second argument (the object) is not mandatory, as each of its 4 keys
const request = mailjet
.post("send", {
'url': 'api.mailjet.com', 'version': 'v3', 'secured': 'https', 'perform_api_call': false
})
.request({
'FromEmail': 'pilot@mailjet.com',
'FromName': 'Pilot',
'Subject': 'Coucou Mailjet2',
'Text-part': 'Hello World2',
'Recipients': [{'Email': 'passenger@mailjet.com'}]})Mailjet loves developers. You can be part of this project!
This wrapper is a great introduction to the open source world, check out the code!
Feel free to ask anything, and contribute:
- Fork the project.
- Create a new branch.
- Implement your feature or bug fix.
- Add documentation to it.
- Commit, push, open a pull request and voila.
TODO:
- Extend Error class to create Api errors
