Documentation
    Preparing search index...

    Module mailpit-api

    mailpit-api

    Package Version Test Suite Code Coverage Documentation

    A zero-dependency TypeScript client for interacting with Mailpit's REST API. Ideal for automating your email testing. Works in Node.js, browser, and any modern JS runtime.

    For real-time WebSocket events, see mailpit-ws.

    npm install mailpit-api
    

    Detailed documentation covering all available methods and type definitions.

    Upgrading from v1? See the upgrade guide.

    Prerequisites: These examples require a Mailpit installation. See the Mailpit installation guide.

    import { MailpitClient } from "mailpit-api";

    // Initialize the API client
    const mailpit = new MailpitClient("http://localhost:8025");

    // Send a message
    await mailpit.sendMessage({
    From: { Email: "user@example.test" },
    To: [{ Email: "rec@example.test" }],
    Subject: "Test Email",
    });

    // Get a summary of all messages
    const messages = await mailpit.listMessages();

    // Delete all messages
    await mailpit.deleteMessages();

    Use mailpit-api with Playwright as a custom test fixture to handle email testing.

    // fixtures.ts
    import { test as base } from "@playwright/test";
    import { MailpitClient } from "mailpit-api";

    type MyFixtures = {
    mailpit: MailpitClient;
    };

    export const test = base.extend<MyFixtures>({
    mailpit: async ({}, use) => {
    const mailpit = new MailpitClient("http://localhost:8025");
    await mailpit.deleteMessages();
    await use(mailpit);
    },
    });

    export { expect } from "@playwright/test";
    // tests/register.spec.ts
    import { test, expect } from "../fixtures";

    test("should receive welcome email after registration", async ({
    page,
    mailpit,
    }) => {
    await page.goto("/register");
    await page.getByTestId("email").fill("test@example.test");
    await page.getByTestId("password").fill("password123");
    await page.getByTestId("submit").click();

    await expect(page.getByTestId("success-message")).toBeVisible();

    // Wait for the welcome email (up to 5 seconds by default)
    const message = await mailpit.waitForMessage({
    query: "subject:Welcome to Our App",
    });

    expect(message.To[0].Address).toBe("test@example.test");
    expect(message.From.Address).toBe("no-reply@your-app.test");
    expect(message.Subject).toBe("Welcome to Our App");
    });
    Scenario Method
    Wait for a specific message (by subject, sender, etc.) waitForMessage()
    Wait for N messages to exist (optionally matching a search) waitForMessages()
    Real-time notification of any new message Use mailpit-ws

    mailpit-api is also fully compatible with browser environments. See the Mailpit CORS configuration documentation to allow requests from your app's origin.

    Classes

    MailpitClient

    Interfaces

    MailpitAttachmentRequest
    MailpitAttachmentResponse
    MailpitAuthCredentials
    MailpitChaosTrigger
    MailpitChaosTriggersRequest
    MailpitChaosTriggersResponse
    MailpitClientOptions
    MailpitConfigurationResponse
    MailpitDatabaseIDsRequest
    MailpitEmailAddressRequest
    MailpitEmailAddressResponse
    MailpitHTMLCheckResponse
    MailpitInfoResponse
    MailpitLinkCheckResponse
    MailpitMessageHeadersResponse
    MailpitMessageListItem
    MailpitMessagesSummaryResponse
    MailpitMessageSummaryResponse
    MailpitReadStatusRequest
    MailpitSearchMessagesRequest
    MailpitSearchRequest
    MailpitSendMessageConfirmationResponse
    MailpitSendRequest
    MailpitSetTagsRequest
    MailpitSpamAssassinResponse
    MailpitTimeZoneRequest
    MailpitWaitForMessageRequest
    MailpitWaitForMessagesRequest