# Virtual inboxes
![](/assets/trap.svg)

MailSlurp inboxes can be used to trap outbound emails so that no emails are ever sent to real recipients. Catching mail requires the creation of a virtual [inbox](/docs/inboxes/).

## Creating mail catchers

```typescript
const mailTrap = await mailslurp.inboxController.createInboxWithOptions({
    createInboxDto: {
        virtualInbox: true,
    },
});
```

<a href="/docs/csharp/">Documentation</a>

<a href="/docs/go/">Documentation</a>

<a href="/docs/java/">Documentation</a>

<a href="/docs/php/">Documentation</a>

<a href="/docs/python/">Documentation</a>

<a href="/docs/ruby/">Documentation</a>

<a href="/">Documentation</a>

## Trapping outbound sent emails
Virtual inboxes capture outbound emails and prevent the sending to real customers. You can verify sent email using the virtualSend property.

```typescript
const sent = await mailslurp.inboxController.sendEmailAndConfirm({
    inboxId: mailTrap.id,
    sendEmailOptions: {
        to: [customer.emailAddress],
        subject: 'Test email',
        body: 'This is using a virtual inbox and will not be sent to real customers',
    },
});
expect(sent.to).toContain(customer.emailAddress);
expect(sent.virtualSend).toBeTruthy();
```

<a href="/docs/csharp/">Documentation</a>

<a href="/docs/go/">Documentation</a>

<a href="/docs/java/">Documentation</a>

<a href="/docs/php/">Documentation</a>

<a href="/docs/python/">Documentation</a>

<a href="/docs/ruby/">Documentation</a>

<a href="/">Documentation</a>
