mailisk
Version:
Mailisk library for NodeJS
113 lines (76 loc) • 3.67 kB
Markdown
# Mailisk Node Client
Mailisk is an end-to-end email testing platform. It allows you to receive emails with code and automate email tests.
- Get a unique subdomain and unlimited email addresses for free.
- Easily automate E2E password reset and account verification by catching emails.
- Virtual SMTP support to test outbound email without 3rd party clients.
## Get started
For a more step-by-step walkthrough see the [NodeJS Guide](https://docs.mailisk.com/guides/nodejs.html).
### Installation
#### Install with npm
```shell
npm install --save-dev mailisk
```
#### Install with Yarn
```shell
yarn add mailisk --dev
```
### Usage
After installing the library import it and set the [API Key](https://docs.mailisk.com/#getting-your-api-key)
```js
const { MailiskClient } = require("mailisk");
// create client
const mailisk = new MailiskClient({ apiKey: "YOUR_API_KEY" });
// send email (using virtual SMTP)
await client.sendVirtualEmail(namespace, {
from: "test@example.com",
to: `john@${namespace}.mailisk.net`,
subject: "Testing",
text: "This is a test.",
});
// receive email
const result = await client.searchInbox(namespace);
console.log(result);
```
### API Reference
This library wraps the REST API endpoints. Find out more in the [API Reference](https://docs.mailisk.com/api-reference/).
## Client functions
### searchInbox(namespace, params?)
The `searchInbox` function takes a namespace and call parameters.
- By default it uses the `wait` flag. This means the call won't return until at least one email is received. Disabling this flag via `wait: false` can cause it to return an empty response immediately.
- The request timeout is adjustable by passing `timeout` in the request options. By default it uses a timeout of 5 minutes.
- By default `from_timestamp` is set to **current timestamp - 5 seconds**. This ensures that only new emails are returned. Without this, older emails would also be returned, potentially disrupting you if you were waiting for a specific email. This can be overriden by passing the `from_timestamp` parameter (`from_timestmap: 0` will disable filtering by email age).
```js
// timeout of 5 minutes
await mailisk.searchInbox(namespace);
// timeout of 1 minute
await mailisk.searchInbox(namespace, {}, { timeout: 1000 * 60 });
// returns immediately, even if the result would be empty
await mailisk.searchInbox(namespace, { wait: false });
```
#### Filter by destination address
A common use case is filtering the returned emails by the destination address, this is done using the `to_addr_prefix` parameter.
```js
const { data: emails } = await mailisk.searchInbox(namespace, {
to_addr_prefix: "john@mynamespace.mailisk.net",
});
```
For more parameter options see the [endpoint reference](https://docs.mailisk.com/api-reference/search-inbox.html#request-1).
### sendVirtualEmail(namespace, params)
Send an email using [Virtual SMTP](https://docs.mailisk.com/smtp.html). This will fetch the SMTP settings for the selected namespace and send an email. These emails can only be sent to an address that ends in `@{namespace}.mailisk.net`.
```js
const namespace = "mynamespace";
await mailisk.sendVirtualEmail(namespace, {
from: "test@example.com",
to: `john@${namespace}.mailisk.net`,
subject: "This is a test",
text: "Testing",
});
```
This does not call an API endpoint but rather uses nodemailer to send an email using SMTP.
### listNamespaces()
List all namespaces associated with the current API Key.
```js
const namespacesResponse = await mailisk.listNamespaces();
// will be ['namespace1', 'namespace2']
const namespaces = namespacesResponse.map((nr) => nr.namespace);
```