Skip to content

KevinRouchut/OneSecMail

Repository files navigation

logo

npm version npm downloads npm install size node version

Package using the 1secmail.com service.

Create and receive email in only 1 second.


Installation

Warning: This package is native ES modules and does not provide a CommonJS export. If your project uses CommonJS, you will have to convert to ESM or use the dynamic import() function.

Using npm:

npm install onesecmail

Using yarn:

yarn add onesecmail

Using pnpm:

pnpm add onesecmail

Usage

Once the package is installed, you can import the library using import:

import { OneSecMail, OneSecMailAPI } from "onesecmail";

Examples

OneSecMail

import { OneSecMail } from "onesecmail";

const mailbox = await OneSecMail("[email protected]");

const messages = await mailbox.getMessages();

for (const message of messages) {
  const fullMessage = await message.fetchFullMessage();
  console.log(fullMessage.serialize());
}

await mailbox.clearMessages();

OneSecMailAPI

import { OneSecMailAPI } from "onesecmail";

const options = {
  retry: 5,
  timeout: 3000,
};

const api = new OneSecMailAPI(options);

const [email] = await api.genRandomMailbox();

const [login, domain] = email.split("@");

const messages = await api.getMessages(login, domain);

for (const message of messages) {
  const fullMessage = await api.readMessage(login, domain, message.id);
  console.log(fullMessage);
}

API

Options

Options can be passed to the constructor and to each method.

// default options
const options: Partial<Options> = {
  retry: 2, // max retry failed requests
  timeout: 10_000, // milliseconds
};

OneSecMail

Create a mailbox

const mailbox = await OneSecMail();
const mailbox = await OneSecMail("[email protected]");
const mailbox = await OneSecMail(options);
const mailbox = await OneSecMail("[email protected]", options);

Returns an instance of OneSecMailbox.

OneSecMailbox.getMessages([options])

const messages = await mailbox.getMessages();
const messages = await mailbox.getMessages(options);

Returns an array of OneSecMailShortMessage instances.

OneSecMailbox.clearMessages([options])

await mailbox.clearMessages();
await mailbox.clearMessages(options);

OneSecMailbox.startPolling([intervalTime])

intervalTime must be at least 1000.

mailbox.startPolling(); // default intervalTime: 5000 milliseconds
mailbox.startPolling(30_000);

OneSecMailbox.stopPolling()

mailbox.stopPolling();

OneSecMailbox events

mailbox.on("newMessage", (message: OneSecMailShortMessage) => {
  console.log(message.serialize());
});
mailbox.on("error", (error: Error) => {
  console.error(error);
});

OneSecMailShortMessage.fetchFullMessage([options])

const fullMessage = await message.fetchFullMessage();
const fullMessage = await message.fetchFullMessage(options);

Returns an instance of OneSecMailMessage if the message still exists, otherwise throw an error.

OneSecMailMessage has an attachments field that contains an array of OneSecMailAttachment instances.

OneSecMailAttachment.download([options])

const file = await attachment.download();
const file = await attachment.download(options);

Returns a Buffer if the file still exists, otherwise throw an error.

OneSecMailAPI

This class is an exact reproduction of the official 1secmail.com API.

Create an instance

const api = new OneSecMailAPI();
const api = new OneSecMailAPI(options);

Instance methods

All methods return a Promise.

genRandomMailbox([count[, options]])

count must be between 1 and 500.

const emailAddresses = await api.genRandomMailbox(); // same to: genRandomMailbox(1)
const emailAddresses = await api.genRandomMailbox(5);
const emailAddresses = await api.genRandomMailbox(options); // same to: genRandomMailbox(1, options)
const emailAddresses = await api.genRandomMailbox(5, options);

Returns an array of generated email addresses.

getDomainList([options])

const domainList = await api.getDomainList();
const domainList = await api.getDomainList(options);

Returns an array of active domains.

getMessages(login, domain[, options])

const messages = await api.getMessages("demo", "1secmail.com");
const messages = await api.getMessages("demo", "1secmail.com", options);

Returns an array of ShortMessage (message with no body and attachments).

readMessage(login, domain, id[, options])

const message = await api.readMessage("demo", "1secmail.com", 639);
const message = await api.readMessage("demo", "1secmail.com", 639, options);

Returns a Message if the message exists, otherwise returns null.

download(login, domain, id, file[, options])

const file = await api.download("demo", "1secmail.com", 639, "iometer.pdf");
const file = await api.download("demo", "1secmail.com", 639, "iometer.pdf", options);

Returns a Buffer if the file exists, otherwise returns null.