Skip to content

Repository files navigation

mailhog

A NodeJS library to interact with the MailHog API.

Contents

Installation

npm install mailhog

Initialization

require('mailhog')(options) → Object

Description

The mailhog module returns an initialization function.
This function accepts an optional options object that is used for http.request calls to the MailHog API and returns the mailhog API object.

Parameters

NameTypeRequiredDefaultDescription
options.protocolStringnohttp:API protocol
options.hostStringnolocalhostAPI host
options.portNumberno8025API port
options.authStringnoAPI basic authentication
options.basePathStringno/apiAPI base path

Returns

Returns the mailhog API object with the following properties:

{options: Object,messages: Function,search: Function,latestFrom: Function,latestTo: Function,latestContaining: Function,releaseMessage: Function,deleteMessage: Function,deleteAll: Function,encode: Function,decode: Function}

Example

constmailhog=require('mailhog')({host: 'mailhog'})mailhog.messages().then(result=>console.log(result))

API

The following API descriptions assume that the mailhog API object has been initialized.

messages

mailhog.messages(start, limit) → Promise

Description

Retrieves a list of mail objects, sorted from latest to earliest.

Parameters

NameTypeRequiredDefaultDescription
startNumberno0defines the messages query offset
limitNumberno50defines the max number of results

Returns

Returns a Promise that resolves with an Object.

The resolved result has the following properties:

{total: Number,// Number of results availablecount: Number,// Number of results returnedstart: Number,// Offset for the range of results returneditems: Array// List of mail object items}

The individual mail object items have the following properties:

{ID: String,// Mail IDtext: String,// Decoded mail text contenthtml: String,// Decoded mail HTML contentsubject: String,// Decoded mail Subject headerfrom: String,// Decoded mail From headerto: String,// Decoded mail To headercc: String,// Decoded mail Cc headerbcc: String,// Decoded mail Bcc headerreplyTo: String,// Decoded mail Reply-To headerdate: Date,// Mail Date headerdeliveryDate: Date,// Mail Delivery-Date headerattachments: Array// List of mail attachments}

The individual attachments have the following properties:

{name: String,// Filenametype: String,// Content-Typeencoding: String,// Content-Transfer-EncodingBody: String// Encoded content}

Example

asyncfunctionexample(){// Retrieve the latest 10 messages:constresult=awaitmailhog.messages(0,10)// Log the details of each message to the console:for(letitemofresult.items){console.log('From: ',item.from)console.log('To: ',item.to)console.log('Subject: ',item.subject)console.log('Content: ',item.text)}}

search

mailhog.search(query, kind, start, limit) → Promise

Description

Retrieves a list of mail objects for the given query, sorted from latest to earliest.

Parameters

NameTypeRequiredDefaultDescription
queryStringyessearch query
kindStringnocontainingquery kind (from/to/containing)
startNumberno0defines the search query offset
limitNumberno50defines the max number of results

Returns

Returns a Promise that resolves with an Object.

The resolved result has the following properties:

{total: Number,// Number of results availablecount: Number,// Number of results returnedstart: Number,// Offset for the range of results returneditems: Array// List of mail object items}

The individual mail object items have the following properties:

{ID: String,// Mail IDtext: String,// Decoded mail text contenthtml: String,// Decoded mail HTML contentsubject: String,// Decoded mail Subject headerfrom: String,// Decoded mail From headerto: String,// Decoded mail To headercc: String,// Decoded mail Cc headerbcc: String,// Decoded mail Bcc headerreplyTo: String,// Decoded mail Reply-To headerdate: Date,// Mail Date headerdeliveryDate: Date,// Mail Delivery-Date headerattachments: Array// List of mail attachments}

The individual attachments have the following properties:

{name: String,// Filenametype: String,// Content-Typeencoding: String,// Content-Transfer-EncodingBody: String// Encoded content}

Example

asyncfunctionexample(){// Search the latest 10 messages containing "banana":constresult=awaitmailhog.search('banana','containing',0,10)// Log the details of each message to the console:for(letitemofresult.items){console.log('From: ',item.from)console.log('To: ',item.to)console.log('Subject: ',item.subject)console.log('Content: ',item.text)}}

latestFrom

mailhog.latestFrom(query) → Promise

Description

Retrieves the latest mail object sent from the given address.

Parameters

NameTypeRequiredDescription
queryStringyesfrom address

Returns

Returns a Promise that resolves with an Object.

The resolved mail object has the following properties:

{ID: String,// Mail IDtext: String,// Decoded mail text contenthtml: String,// Decoded mail HTML contentsubject: String,// Decoded mail Subject headerfrom: String,// Decoded mail From headerto: String,// Decoded mail To headercc: String,// Decoded mail Cc headerbcc: String,// Decoded mail Bcc headerreplyTo: String,// Decoded mail Reply-To headerdate: Date,// Mail Date headerdeliveryDate: Date,// Mail Delivery-Date headerattachments: Array// List of mail attachments}

The individual attachments have the following properties:

{name: String,// Filenametype: String,// Content-Typeencoding: String,// Content-Transfer-EncodingBody: String// Encoded content}

Example

asyncfunctionexample(){// Search the latest message from "test@example.org":constresult=awaitmailhog.latestFrom('test@example.org')// Log the details of this message to the console:console.log('From: ',result.from)console.log('To: ',result.to)console.log('Subject: ',result.subject)console.log('Content: ',result.text)}

latestTo

mailhog.latestTo(query) → Promise

Description

Retrieves the latest mail object sent to the given address.

Parameters

NameTypeRequiredDescription
queryStringyesto address

Returns

Returns a Promise that resolves with an Object.

The resolved mail object has the following properties:

{ID: String,// Mail IDtext: String,// Decoded mail text contenthtml: String,// Decoded mail HTML contentsubject: String,// Decoded mail Subject headerfrom: String,// Decoded mail From headerto: String,// Decoded mail To headercc: String,// Decoded mail Cc headerbcc: String,// Decoded mail Bcc headerreplyTo: String,// Decoded mail Reply-To headerdate: Date,// Mail Date headerdeliveryDate: Date,// Mail Delivery-Date headerattachments: Array// List of mail attachments}

The individual attachments have the following properties:

{name: String,// Filenametype: String,// Content-Typeencoding: String,// Content-Transfer-EncodingBody: String// Encoded content}

Example

asyncfunctionexample(){// Search the latest message to "test@example.org":constresult=awaitmailhog.latestTo('test@example.org')// Log the details of this message to the console:console.log('From: ',result.from)console.log('To: ',result.to)console.log('Subject: ',result.subject)console.log('Content: ',result.text)}

latestContaining

mailhog.latestContaining(query) → Promise

Description

Retrieves the latest mail object containing the given query.

Parameters

NameTypeRequiredDescription
queryStringyessearch query

Returns

Returns a Promise that resolves with an Object.

The resolved mail object has the following properties:

{ID: String,// Mail IDtext: String,// Decoded mail text contenthtml: String,// Decoded mail HTML contentsubject: String,// Decoded mail Subject headerfrom: String,// Decoded mail From headerto: String,// Decoded mail To headercc: String,// Decoded mail Cc headerbcc: String,// Decoded mail Bcc headerreplyTo: String,// Decoded mail Reply-To headerdate: Date,// Mail Date headerdeliveryDate: Date,// Mail Delivery-Date headerattachments: Array// List of mail attachments}

The individual attachments have the following properties:

{name: String,// Filenametype: String,// Content-Typeencoding: String,// Content-Transfer-EncodingBody: String// Encoded content}

Example

asyncfunctionexample(){// Search the latest message containing "banana":constresult=awaitmailhog.latestContaining('banana')// Log the details of this message to the console:console.log('From: ',result.from)console.log('To: ',result.to)console.log('Subject: ',result.subject)console.log('Content: ',result.text)}

releaseMessage

mailhog.releaseMessage(id, config) → Promise

Description

Releases the mail with the given ID using the provided SMTP config.

Parameters

NameTypeRequiredDescription
idStringyesmessage ID
configObjectyesSMTP configuration
config.hostStringyesSMTP host
config.portStringyesSMTP port
config.emailStringyesrecipient email
config.usernameStringnoSMTP username
config.passwordStringnoSMTP password
config.mechanismStringnoSMTP auth type (PLAIN or CRAM-MD5)

Returns

Returns a Promise that resolves with an http.IncomingMessage object.

Example

asyncfunctionexample(){constresult=awaitmailhog.latestTo('test@example.org')constresponse=awaitmailhog.releaseMessage(result.ID,{host: 'localhost',port: '1025',email: 'test@example.org'})}

deleteMessage

mailhog.deleteMessage(id) → Promise

Description

Deletes the mail with the given ID from MailHog.

Parameters

NameTypeRequiredDescription
idStringyesmessage ID

Returns

Returns a Promise that resolves with an http.IncomingMessage object.

Example

asyncfunctionexample(){constresult=awaitmailhog.latestTo('test@example.org')constresponse=awaitmailhog.deleteMessage(result.ID)console.log('Status code: ',response.statusCode)}

deleteAll

mailhog.deleteAll() → Promise

Description

Deletes all mails stored in MailHog.

Parameters

None

Returns

Returns a Promise that resolves with an http.IncomingMessage object.

Example

asyncfunctionexample(){constresponse=awaitmailhog.deleteAll()console.log('Status code: ',response.statusCode)}

encode

mailhog.encode(str, encoding, charset, lineLength) → String

Description

Encodes a String in the given charset to base64 or quoted-printable encoding.

Parameters

NameTypeRequiredDefaultDescription
strStringyesString to encode
encodingStringyesutf8base64/quoted-printable
charsetStringnoutf8Charset of the input string
lineLengthNumberno76Soft line break limit

Returns

Returns a String in the target encoding.

Example

constquery=mailhog.encode('üäö','quoted-printable')// =C3=BC=C3=A4=C3=B6asyncfunctionexample(){// Search for "üäö" in quoted-printable encoding:constresult=awaitmailhog.search(query)}

decode

mailhog.decode(str, encoding, charset) → String

Description

Decodes a String from the given encoding and outputs it in the given charset.

Parameters

NameTypeRequiredDefaultDescription
strStringyesString to decode
encodingStringyesbase64/quoted-printable
charsetStringnoutf8Charset to use for the output

Returns

Returns a String in the target charset.

Example

constoutput=mailhog.decode('5pel5pys','base64')// 日本

Testing

  1. Start Docker.
  2. Install development dependencies:
    npm install
  3. Run the tests:
    npm test

License

Released under the MIT license.

Author

Sebastian Tschan

About

A NodeJS library to interact with the MailHog API. MailHog is a stand-in SMTP server for Web and API based SMTP testing.

Resources

Stars

40 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages