Send email with Axios JS (and receive email too!)

Axios is a popular HTTP request library for Javascript and NodeJS. It lets you fetch webpages and call APIs from the browser and NodeJS in a reliable and friendly way. With a MailSlurp account Axios can also send and receive emails!

What is Axios?

You can install Axios from NPM as follows:

npm install axios

Making a request is easy once installed:

const axios = require("axios");
axios
  .get("/user?ID=12345")
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

What is MailSlurp?

MailSlurp is a free email API. You can create email addresses on demand then send and receive emails from Javascript. You can create a free account then use the API Key to send and receive emails with Axios.

How to ues email with Axios

To use MailSlurp with Axios first import the library and your API Key.

const axios = require("axios");
const API_KEY = "your-mailslurp-api-key";

Create an inbox

First we can create an email address like so:

async function createInbox() {
  // call MailSlurp createInbox endpoint
  return await axios
    .post(`https://api.mailslurp.com/createInbox?apiKey=${API_KEY}`)
    .then((res) => res.data);
}

MailSlurp inboxes have real email addresses than can send and receive email.

{
  "id": "123",
  "emailAddress": "123@mailslurp.com"
}

Send an email

Sending an email is easy with Axios and MailSlurp. Simple POST data to https://api.mailslurp.com/sendEmail. Include your API Key as a query parameter: ?apiKey=your-api-key.

// send email from inbox 1 to inbox 2
// NOTE you can send emails to any address with MailSlurp
await axios({
  method: "POST",
  url: `https://api.mailslurp.com/sendEmail?apiKey=${API_KEY}`,
  data: {
    senderId: inbox1.id,
    to: inbox2.emailAddress,
    subject: "Hello inbox 2",
    body: "Test from inbox 1",
  },
});

Receive emails

You can receive emails with MailSlurp too!

// receive the email from inbox 2
const email = await axios
  .get(
    `https://api.mailslurp.com/waitForLatestEmail?apiKey=${API_KEY}&inboxId=${inbox2.id}`
  )
  .then((res) => res.data);
expect(email.from).toEqual(inbox1.emailAddress);
expect(email.subject).toEqual("Hello inbox 2");
expect(email.body).toEqual("Test from inbox 1");

Next steps

You can use Axios and MailSlurp for all your email needs. Sending, receiving, or even end-to-end testing.

Tags