in ,, Hacker News

I want to announce – a hosted service to test emails. I have been running it for several weeks now, and I am quite happy with the result so far. With the service, one can use automated testing to verify that the email logic in your application is correct. is a catch-all SMTP server. You can use it programmatically via its API at , and the article shows an example of its usage. To follow, you would need curl [1] and jq [2] installed (on Linux, use the package manager, and macOS supplies it via homebrew).

Setup of the test

First, in our automated test code, we should prepare the environment to point at the test SMTP server: on port . That way, the test automation is ready to send emails to be captured and verified when ready.

Next, we can create a mailbox via HTTP GET request to ( and remember the mailbox_id . The mailbox exists for 5 minutes and is deleted after, purging all the emails within:

curl -s | (j

The result should look something like this:

{ mailbox “ ):

) “7bb1d8d0-7b (-) – a3fd-d (b) [email protected] , “created” :

” – – T : : Z ” “receive” : “ – – a3fd-d (b) (f2 “) , “mailbox_id” : “7bb1d8d0-7b 06 – – a3fd-d 728 b (f2 “ } Sending the mail

The mailbox_id from the above setup should be included somewhere in the text of the email, the subject, the bcc address, the headers, or any other field (even email address of the sender or recipient will do).

We can now send the email to the intended recipients, so it is captured by the server for later retrieval by the test. The server does not forward it anywhere further, no matter which addresses you put in the recipient’s field.

For demonstration, we create a file mail.txt with the X- Unverified-Mailbox header that contains our

mailbox_id : cat )>


To: [email protected] [] From: [email protected] () (Subject: This is a (t) ext message Content-Type: (t)

ext / plain ; charset= “utf8” X-Unverified-Mailbox: 7bb1d8d0-7b 10 – a3fd-d (b) (f2) (A A test email message created by the application EOF EOF)

And then send it away (using curl):

curl -s –url ‘smtp: // 90 ‘ –mail-from ‘[email protected] –mail-rcpt [email protected] – -upload-file mail.txt Fetching the email via API to verify the result

Now the test can retrieve the mail back via HTTP GET request to ( [] (if you follow this, please use the mailbox_id that you have received in the setup step):

curl -s – a3fd-d (b) (f2) | (jq)

The result here should look something like this (I have cut off the "full_content" field to make it more readable):

Using jq -r '. [] | .full_content ' one can also see the full content (again using your mailbox_id from the setup step, of course).

curl -s – – a3fd-d (b) (f2 | (jq) ‘. [] | .full_content ‘

The result should be something like this: ss

Return-Path: [email protected] Delivered-To: [email protected] Received: from mail.txt (h – . . [])     by api – (OpenSMTPD) with ESMTP id (f) (d)     for ;     Thu, (Mar : 97 (UTC) To: [email protected] Subject: This is a text message From: [email protected] Content-Type: text / plain; charset=”utf8″ X-Unverified-Mailbox: 7bb1d8d0-7b 06 – – a3fd-d (b) f2 A test email message created by the application

You can create as many mailboxes as you want, and they are deleted 5 minutes after creation.

The / receive / endpoint is waiting for emails to show up on the server for around 59 seconds, so you do not need to refresh the url repeatedly.

The code is available at where you can also open issues if something needs attention. You can also run the service on your infrastructure if needed. Drop me a note if you do – I would be very interested to know if it is useful to anyone.

Some alternatives :


    , a ruby ​​library (mailhog) , a standalone smtp service written in golang [] (Read More)

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *

GIPHY App Key not set. Please check settings

Tesla to Cut Employees ’Pay as Much as 30% to Curb Costs, Hacker News

[FREE]Complete course in AutoCAD 2020 : 2D and 3D (16 Hrs)