Get emails from code (how to receive emails programmatically)

How to receive emails directly in code, applications, and tests. Use MailSlurp to send and receive SMTP emails.

Once you have created an inbox any emails sent to its email address received and saved under the inboxes ID. MailSlurp allows you to fetch and receive emails send to an inbox's email address in several ways:


Visual dashboard

The simplest way to receive emails is to create an inbox and send it an email using your email provider. You can then view the emails in your dashboard.

Individual emails

If you know that an email exists and you have its id simply call a getEmail(emailId) method to get a full email object that includes the body.

const [email] = await mailslurp.waitForEmailCount(1,, 30000, true);
const { id, to, from, subject, isHTML, attachments } =
  await mailslurp.getEmail(!);

WaitFor methods

For programmatic use-cases the MailSlurp API and SDKs provide WaitFor methods. This is the recommended way to receive emails.

WaitFor methods hold a connection until a condition is met. If the condition is met a list of matching EmailPreview entities is returned. These contain email id values that can be used to fetch individual emails.

There are several waitFor variations:

Wait For Latest

const latestEmail = await mailslurp.waitForLatestEmail(,

Wait For Email Count

const emails = await mailslurp.waitForEmailCount(

Wait For Matching Emails

const matchingEmails = await mailslurp.waitForMatchingEmails(
    // match for emails with no attachments
    conditions: [
        condition: ConditionOptionConditionEnum.HAS_ATTACHMENTS,
        value: ConditionOptionValueEnum.FALSE,
    // match for emails from a specific email address
    matches: [
        field: MatchOptionFieldEnum.FROM,
        should: MatchOptionShouldEnum.CONTAIN,
        value: inbox.emailAddress,

Wait For Nth Email

const nthEmail = await mailslurp.waitForNthEmail(!,

All Emails

You can fetch all existing emails from an inbox with the getEmails methods. These methods return a collection of List<EmailPreview>.

await mailslurp.getEmails(!);
// or paginated
await mailslurp.getAllEmails(0, 10, [!], 'DESC');

To get the body or attachments for an email you must call getEmail or getAttachment methods individually.


WebHooks are a way to be notified via HTTP POST when a message is received. If you attach a WebHook to an inbox the WebHook URL will be notified when a new email is received. WebHooks are useful for high throughput applications or for environments where WaitFor methods are not appropriate.

Receiving attachments

Whenever MailSlurp receives email it extras attachments and stores them securely to disk. Attachments are not returned directly when emails are fetched. Instead you must obtain the attachment IDs from an email and then call attachment methods to receive attachment metadata and binary content.

// get attachment content as HTTP OctetStream
downloadAttachment(emailId: string, attachmentId: string): Promise<Response>
interface AttachmentMetaData {
  contentLength: number;
  contentType: string;
  name: string;

Related content

Email APIs for Developers & QA

Build powerful applications and test suites using real email addresses in code. Create inboxes on demand then send and r...

Official MailSlurp documentation

Developer documentation and guides for MailSlurp's email APIs. REST, SDKS, Graphql, SMTP and more. MailSlurp is an email...

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.

Temporary email api

Temporary email API for disposable email accounts. Free for personal use with REST API and clients in NodeJS, CSharp and...

Mailinator alternative

Alternatives to Mailinator for test email accounts. Create real email addresses using MailSlurp

Generate API clients using Swagger

How to create SDK libraries a language of your choice

Ready to dive in?Start building email applications today.