GraphQL Email API

Fetch and read emails with GraphQL inboxes using MailSlurp email API.

graphql email accounts

MailSlurp offers powerful email inbox APIs over REST and GraphQL. The GraphQL API is accessible via HTTP POST at https://graphql.mailslurp.com. Let's see how we can use GraphQL to create email addresses, send and even receive emails and attachments using GraphQL.

Authentication

Note you must set an x-api-key header in your GraphQL client and pass a valid MailSlurp API Key (which you can create for free here). The GraphQL endpoints cover most but not all MailSlurp functionality - for instance file upload/download is exclusive to the REST API and SDK clients.

Explorer

Open GraphQL explorer

Setup code

You can call MailSlurp's GraphQL email API using any React/GraphQL client. This includes fetch, curl etc. An easier way might be using the excellent open source graphql-request library. First install the NPM dependencies

// npm install --save graphql-request
import { gql, GraphQLClient } from 'graphql-request';

Next we need to create a client that sets the x-api-key header using to the value of your MailSlurp account API KEY.

// create a new graphql-request client using the MailSlurp graphql endpoint
// and passing a headers map including your MailSlurp API Key using "x-api-key" header
const client = new GraphQLClient('https://graphql.mailslurp.com', {
  headers: {
    'x-api-key': YOUR_API_KEY,
  },
});

Editor config

If you want to enable auto-complete in gql, VSCode, IntelliJ, or another editor create a .graphqlconfig file in the root of your project and include this endpoint:

{
  "name": "Remote Schema",
  "schemaPath": "remote-schema.graphql",
  "extensions": {
    "endpoints": {
      "mailslurp": {
        "url": "https://graph.mailslurp.com",
        "headers": {
          "x-api-key": "YOUR_API_KEY"
        },
        "introspect": true
      }
    }
  }
}

Query

You can make queries like so. Note that the example gql method call should use backticks ` to use template string invocation. They are shown below as double quotes " because of formatting issues. Note you can use raw strings without gql too if you prefer.

const query = gql`
  {
    inboxes {
      totalElements
    }
  }
`;
const { inboxes } = await client.request(query);
expect(inboxes.totalElements).toBeGreaterThan(0);

The great thing about graphql is that you can explore the MailSlurp API schema yourself using the provided GraphQL Playground

Mutations

const { createInbox } = await client.request(gql`
  mutation {
    createInbox {
      id
      emailAddress
    }
  }
`);
expect(createInbox.id).toBeTruthy();
expect(createInbox.emailAddress).toContain('@mailslurp');

Send email

const { sendEmail } = await client.request(
  gql`
    mutation SendEmail(
      $fromInboxId: String!
      $to: [String!]!
      $subject: String!
    ) {
      sendEmail(fromInboxId: $fromInboxId, to: $to, subject: $subject) {
        id
      }
    }
  `,
  {
    fromInboxId: createInbox.id,
    to: [createInbox.emailAddress],
    subject: 'Test',
  }
);
expect(sendEmail.id).toBeDefined();

Related content

CSharp Email API for DotNET and ASP

Receive email in DotNET Core using C# and MailSlurp

Golang email library

Golang Email Library for sending and receiving emails in Go over SMTP or HTTP/S.

Javascript email libraries for MailSlurp

Nodemailer alternatives to send and receieve email in code and tests

Send and receive email in PHP (without using mail functions)

PHP email API for creating inboxes, sending email, and receiving attachments in code and tests.

Ruby Mailer SDK - send and receive emails in Rails, Rspec an...

Receive email and attachments with Rails, Rspec, and Ruby without SMTP using MailSlurp Ruby Gem.

Fastest way to start a typescript project

Modern typescript tooling has come a long way. See how to setup a new project with TS-Node, TSC, and typeconfig.json.

Ready to dive in?Start building email applications today.