# Email APIs for developers

TIP

Checkout the API documentation to get started.

# MailSlurp is made for developers

MailSlurp was created as an email API that goes beyond traditional SMTP limitations.

# REST API and SDKs

Simple HTTP API plus official libraries in Javascript, Python, PHP, Java, Golang, Ruby, Objective C, and C# / DotNet.

# Email addresses on demand

Create new private email addresses on demand from applications or tests. (Examples in Javascript but available in all languages.)

// create a randomly assigned email address
const inbox = await mailslurp.createInbox();
console.log(inbox.emailAddress);
// create a custom email address with your own domain
const customInbox = await mailslurp.createInbox("user@mydomain.com");

# Fetch emails in code

Receive emails directly in tests or applications.

// hold connection open until first email found or timeout
const email = await mailslurp.waitForLatestEmail(inbox.id);
console.log(email.subject, email.body, email.attachments);
// more examples
const nthEmail = await mailslurp.waitForNthEmail(inbox.id, index);
const emails = await mailslurp.waitForEmailCountinbox(inbox.id, count);

# Use pattern matching

Search for emails matching field or body conditions. Use email with powerful helper functions.

// fetch in tests
const welcomeEmails = await mailslurp.waitForMatchingEmails(
  {
    matches: [
      {
        field: "SUBJECT",
        should: "CONTAIN",
        value: "Welcome",
      },
    ],
  },
  count,
  inbox.id
);

# Extract content and verify

You can use MailSlurp to extract email contents and attachments for use in tests or email processing pipelines.

const testInbox = await mailslurp.createInbox();
const user = await myApp.signUp(testInbox.emailAddress);
// verify that confirmation email was sent by your app
const email = await mailslurp.waitForLatestEmail(testInbox.id);
// confirm the user using the code
const [_, verificationCode] = /your code is "([0-9]{6})"/g.exec(email.body);
// do something with code like verifying an account
await myApp.confirmUser(verificationCode);

# Send email attachments

Easily send attachments and emails in code without SMTP setup.

// upload attachments to mailslurp
const file = fs.readFileSync(path);
const [id] = await mailslurp.uploadAttachment({
  base64Contents: new Buffer(file).toString("base64"),
  filename: "",
  contentType: "",
});
// attach the files with id to send
mailslurp.sendEmail(inbox.id, {
  to: ["test@example.org"],
  attachments: [id],
});

# WebHook queues

Have received messages sent directly to your server in a queue system with webhooks.

// get messages sent to your server
@PostMapping("/inbound-emails")
fun receiveEmails(emailEvent: Map<String,String>) {
    // respond to event
    mailSlurp.getAttachments(emailEvent["id"])
}

# Send templated emails

Send HTML emails with Handlebars templating support.

mailslurp.sendEmail(inbox.id, {
  to: ["user@example.org"],
  subject: "Hello {{name}}",
  body: "Dear {{name}}, your code is {{code}}.",
  templateVars: {
    name: "",
    code: "",
  },
});

# Convenient UI

Manage your API usage and team access with our online dashboard.

ui