# 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 (opens new window) 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 (opens new window) 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.