Sending Emails with Mailjet

Mailjet is a third-party global email service that offers App Engine users a free tier with 25,000 emails each month. In addition, Mailjet also offers:

  • European data privacy compliance.
  • Email and deliverability features such as customizable priority settings and automated throttle management.
  • A comprehensive API resource library in Go, PHP, Nodejs, Java, Python, Ruby to manage sub-accounts, authentication, contacts, campaigns, custom payloads, statistics, real time events and parsing through the Event API.
  • 24/7 follow-the-sun support in 4+ languages.
  • Ability to send emails from domains other than

Before you begin

Before you send mail with Mailjet:

  1. Create a Mailjet account. As a Google App Engine developer, you can start with 25,000 free emails per month.
  2. In Mailjet, add and verify the sender email address.
  3. Note your API key and secret from your Mailjet SMTP Settings.
  4. Select or create a Cloud Platform Console project.

    Go to the Projects page

Setting up

Use the Node.js wrapper for the Mailjet API to send emails from your application.

  1. Install the Mailjet npm package:

    npm install node-mailjet
  2. Configure your Mailjet settings, such as the API key and secret in your app.yaml file:

    runtime: nodejs
    vm: true
      MJ_APIKEY_PUBLIC: <your-mj-apikey-public>
      MJ_APIKEY_PRIVATE: <your-mj-apikey-private>

  3. Require the library in your application code.

    var Mailjet = require('node-mailjet').connect(

Sending mail

To send a message in your application code:

  1. Create a new Mailjet client.

  2. Specify the details and contents of the message, including the sender email and name, subject, message body, and recipients.

  3. Retrieve the server response to check the message status.

For example:'/hello', function (req, res, next) {
  var options = {
    // From
    FromEmail: '',
    FromName: 'Mailjet Demo',
    // To
    Recipients: [{ Email: }],
    // Subject
    Subject: 'Hello World!',
    // Body
    'Text-part': 'Mailjet on Google App Engine with Node.js',
    'Html-part': '<h3>Mailjet on Google App Engine with Node.js</h3>'

  var request ='send').request(options);

    .on('success', function (response, body) {
      console.log(response.statusCode, body);
      // Render the index route on success
      return res.render('index', {
        sent: true
    .on('error', function (err) {
      return next(err);


The response payload of a Mailjet Send API call provides a MessageID. You can use the MessageID to access information and statistics about the message.

Use the GET operation on /message to get basic information about a message such as the sender, recipient, and message size. To learn more about message statistics, including sample API responses, refer to the Mailjet API guide.

Event API

The Mailjet Event API offers real-time notification through HTTP requests (webhooks) on any events related to the messages you sent, such as when messages are sent or opened. This event notification works for all kind of messages, from transactional to marketing campaigns.

Use the Event API to achieve specific actions efficiently, such as logging the marketing messages sent to your customers,or updating the unsubscribed contacts in your customer relationship management (CRM) system. Instead of polling the Mailjet API a few times a day, data is pushed events happen, in near real-time.

You can also group events together, which is useful when sending larger volumes. For further instructions, see the Mailjet documentation.

Parse API for inbound emails

You can also receive and parse emails with Mailjet and have the content delivered to a webhook. Mailjet organizes all the information so you can save it to your CRM or database.

Like the Event API, the Parse API notifies in near real-time to a defined webhook that sends data back to your application when a new message matches a predefined route. Emails are sent to your application structured as a JSON packet with all the useful information you need, such as the sender, recipient, subject, body and headers.

For more information, including additional fields sent with every email, and instructions for DNS setup and usage, see Mailjet’s Parse API documentation.

Send feedback about...

App Engine flexible environment for Node.js docs