GraphQL Email API Tutorial

Did you know you can send and receive emails using GraphQL?

GraphQL is a hot new technology for fetching data using a graph. MailSlurp offers a free email address API that you can use to create inboxes, read email, send emails and more. Let's see how it works.

Where is it?

Access the MailSlurp GraphQL email API endpoint at https://graphql.mailslurp.com. If you load the url in a browser you'll see the GraphQL explorer. You can use it to perform queries or use your own graphql client locally.

Install GraphQL client

You can install MailSlurp's graphQL library using NPM:

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

Note you will need a free MailSlurp API key. Create an API key at MailSlurp account dashboard and store the value safely. Then use the key in code to configure the client. We must create a client that sets an x-api-key header using 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,
  },
});

Making a query

You can make queries like so. Note that the example gql method call should use backticks ` to use template string invocation. 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

Here is how you can perform mutations.

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

Send email

And here is a way to send emails using GraphQL.

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();

Further reading

For more information please see the GraphQL email guide.

Related content

Java email client: send and receive emails and attachments i...

MailSlurp Java SDK for sending and receive email and attachments on the JVM.

Javascript email libraries for MailSlurp

Nodemailer alternatives to send and receieve email in code and tests

Email for testing

Test email accounts for email testing. Alternatives to Mailinator, MailTrap, Mailosaur and more.

Email marketing campaign bulk email testing

Send bulk transactional emails with MailSlurp online or in code using CSharp, Node.js, Java, PHP and more.

Do's and Don'ts for multiple SPF records

Do's and Don'ts for multiple SPF records

Email Over Blockchain

Can emails be sent over blockchain? Well kind of! LedgerMail and other and at the cutting edge of decentralized email.

Ready to dive in?Start building email applications today.