Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

A NodeJS client library, written in TypeScript, to interact with the Mailpit API.

License

Notifications You must be signed in to change notification settings

mpspahr/mailpit-api

Repository files navigation

Mailpit API Client

Package Version Test Suite Code Coverage Documentation

A TypeScript client for interacting with Mailpit's REST API. Ideal for automating your email testing.

Installation

npm install mailpit-api

Documentation

Detailed documentation, including all available methods and type definitions, is available.

Examples

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

Basic Usage with NodeJS

import { MailpitClient } from "mailpit-api";

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

// Send a message
await mailpit.sendMessage({
  From: { Email: "[email protected]" },
  To: [{ Email: "[email protected]" }],
  Subject: "Test Email",
});

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

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

Using with Playwright Tests

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);
    mailpit.disconnect();
  },
});

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

test("should receive welcome email after registration", async ({
  page,
  mailpit,
}) => {
  // Start waiting for the new email event before triggering the action
  const emailPromise = mailpit.waitForEvent("new");

  // Register a new user
  await page.goto("/register");
  await page.getByTestId("email").fill("[email protected]");
  await page.getByTestId("password").fill("password123");
  await page.getByTestId("submit").click();

  // Wait for success message on page
  await expect(page.getByTestId("success-message")).toBeVisible();

  // Wait for the new email event (up to 5 seconds by default)
  const event = await emailPromise;

  // Verify the email from the event data
  expect(event.Data.To[0].Address).toBe("[email protected]");
  expect(event.Data.From.Address).toBe("[email protected]");
  expect(event.Data.Subject).toBe("Welcome to Our App");
});

About

A NodeJS client library, written in TypeScript, to interact with the Mailpit API.

Resources

License

Security policy

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •