This guide explains how to read inbound email content and attachments once messages have reached a MailSlurp inbox.

For advanced receive orchestration (`waitFor`, webhook strategy, and CI patterns), see [receive emails in code](/guides/developers/receiving-email/).

## Step 1: capture inbound email

Create or select an inbox, then send a message to its address. MailSlurp stores inbound messages under that inbox ID.

- Inbox creation: [create inboxes](/guides/developers/creating-inboxes/)
- Delivery diagnostics: [inbox not receiving emails](/support/inbox-not-receiving-emails/)

## Step 2: list messages

Use inbox listing methods to retrieve message previews, then fetch full content by email ID.

Message previews are good for selecting candidates; full message fetch is required for complete body/header analysis.

## Step 3: inspect content

In dashboard and API workflows, you can inspect:

- Envelope and headers (`to`, `from`, `subject`)
- Plain text body
- HTML body
- Raw source for low-level analysis

Dashboard examples:

![email overview](/assets/app/features/email-overview.png)

![email text content](/assets/app/features/email-text-content.png)

## Step 4: retrieve attachments

Attachments are stored separately and retrieved by attachment ID.

```typescript
// download binary attachment content
downloadAttachment(emailId: string, attachmentId: string): Promise<Response>
```

```typescript
interface AttachmentMetaData {
  contentLength: number;
  contentType: string;
  name: string;
}
```

Dashboard attachment view:

![receive attachments](/assets/app/features/email-attachments.png)

## Step 5: verify deliverability quality

Use spam and authentication diagnostics when message quality is part of the test objective:

- [Email spam checker](/tools/email-spam-checker/)
- [SPF checker](/tools/spf-checker/)
- [DKIM checker](/tools/dkim-checker/)
- [DMARC checker](/tools/dmarc-checker/)

Dashboard analysis example:

![email analysis](/assets/app/features/spam-analysis.png)

## Practical receive checklist

- Use a dedicated inbox per test or environment.
- Add timeout-aware receive assertions.
- Validate links/codes and key headers.
- Download and verify attachment MIME types.
- Track failures via webhooks for async systems.

## Next step

Continue with [send emails in code](/guides/sending-emails/) or build end-to-end assertions in [Cypress](/guides/testing/cypress-js/).
