Skip to content
Facteur
/ Comparison

Facteur and Mailosaur

Mailosaur receives test emails in servers. Its Core plan shows SMS separately. Here is what it publishes, then what Facteur does.

Sources

What Mailosaur publishes

Each line is something Mailosaur publishes. It carries the address of the page where we read it and the date we read it. What we could not check is not here. These pages change: read the source again before you decide.

  1. 01

    The pricing page shows three plans: Personal from $20 per month and Core from $50 per month, billed annually, and Enterprise on quote.

    https://mailosaur.com/pricing ·

  2. 02

    The Personal plan shows 15,000 inbound emails per month, based on a daily limit of 500. The Core plan shows 75,000 inbound emails per month, based on a daily limit of 2,500.

    https://mailosaur.com/pricing ·

  3. 03

    The Personal plan includes one inbox, with unlimited email addresses. The Core plan includes multiple inboxes.

    https://mailosaur.com/pricing ·

  4. 04

    On the Core plan, the page shows "SMS and authentication" from $37.50 per month, and email previews from $25 per month.

    https://mailosaur.com/pricing ·

  5. 05

    The Node client installs with npm install mailosaur and is built with new MailosaurClient(key). Its messages.get(serverId, { sentTo }) method waits for the first matching email, 10 seconds by default, a delay the timeout option extends.

    https://mailosaur.com/docs/email-testing/nodejs ·

  6. 06

    The codes found in a message are in the html.codes and text.codes arrays, each with a value property.

    https://mailosaur.com/docs/test-cases/codes ·

  7. 07

    The API reference documents GET /api/servers, POST /api/messages/search, GET /api/messages/:id, GET /api/files/attachments/:id, GET /api/files/email/:id (the .eml file), GET /api/analysis/deliverability/:id, POST /api/devices/otp and GET /api/usage/limits.

    https://mailosaur.com/docs/api ·

Translating your tests

The same test, with one then the other

Both clients wait for the message. What changes: the inbox id replaces the serverId, and the code is read from the otp field instead of html.codes.

Before, with Mailosaur JavaScript
// The Mailosaur client, and the code looked up in the body.
const MailosaurClient = require('mailosaur');
const mailosaur = new MailosaurClient(process.env.MAILOSAUR_API_KEY);

// Waits for the first matching message, 10 seconds by default.
const message = await mailosaur.messages.get(serverId, {
  sentTo: address,
});

const code = message.html.codes[0].value;
Every call of Mailosaur shown here comes from its documentation: the Sources section gives the page and the date it was read.
After, with Facteur TypeScript
// No Facteur package to install: one HTTP call that waits.
const search = new URLSearchParams({
  inbox: 'j3k9x2mq',
  sentTo: address,
  wait: '30000',
});

const response = await fetch('https://api.facteur.eu/v1/messages?' + search, {
  headers: { authorization: 'Bearer ' + process.env.FACTEUR_API_KEY },
});
const { messages } = await response.json();

// The code is already extracted, in a field of its own.
const code = messages[0].otp;
Facteur publishes no library yet: the test calls the API over HTTP. The developers' portal plays this call against the service.
The migration, step by step

Four steps, both services side by side

  1. Step 01

    Create an account and an inbox

    The inbox id, eight characters, plays the part of the serverId. Any address of the inbox's domain lands in it.

  2. Step 02

    Point your sends at the inbox

    Your scenarios write to an address of the Facteur inbox's domain, with one tag per test after the "+".

  3. Step 03

    Replace messages.get

    Facteur's search takes inbox, sentTo and wait, and waits for the message. The code is read from otp instead of html.codes[0].value.

  4. Step 04

    Run the suite, then cancel

    Keep both accounts until the suite is green: there is no data to export and no DNS to switch.

The switch, in short

What changes, row by row

Each cell about Mailosaur links to the sentence of the sources it comes from. A row that no source lets us write is not in the table.

Topic Facteur Mailosaur
Waiting for a message The search waits up to the delay you set, five minutes at most. messages.get waits 10 seconds by default, longer with the timeout option. source
Reading the code otp holds the most likely code, codes all the ones found. html.codes and text.codes, each with its value property. source
Volume The included volume counts over the billing period; only the overage is bounded per day. The Personal and Core plans state their volume based on a daily limit. source
SMS SMS inboxes exist, but the connection to the carrier is not in service: no real SMS arrives today. "SMS and authentication" shown separately on the Core plan. source
.eml source, deliverability, TOTP None of these three routes in the public API. One route for each. source
Facteur

What Facteur does

These lines describe Facteur as its product pages and help centre give it.

01

One address per test

Everything before the at sign is free. Two tests writing to inscription+run-42 and inscription+run-43 each get their own message, in the same inbox.

02

Wait for the message in one request

The search accepts a wait of five minutes at most. If nothing arrives, it answers an empty list, not an error.

03

The code, already extracted

The otp field holds the most likely one-time code. When nothing announces it, Facteur leaves it empty rather than guess.

04

Reading costs nothing

Only a received, kept message counts against your plan. A test that receives 3 emails and reads them 40 times uses 3.

05

Deleted when its time is up

Each message is deleted when your plan's duration has passed, with its raw file and attachments.

06

Hosted at OVHcloud

The application and its database are hosted at OVHcloud, and billing is in euros. The data centre is in France.

07

SMS are not received yet

The connection to the carrier that delivers SMS is not in service. An assigned number receives no real SMS today.

Choosing

Frequently asked questions

When to look at Mailosaur?

Mailosaur publishes routes for a message's .eml source, deliverability analysis and TOTP codes, and email previews on its Core plan. Facteur has none of these features. If your suite depends on them, look at Mailosaur.

How much work is the migration from Mailosaur?

The client and the call that waits for the message change, and the assertion on the code gets shorter. The Migrate from Mailosaur page gives the mapping of each API call.

What happens to the messages already received at Mailosaur?

They stay at Mailosaur. They are test messages: they come back on the next run of your suite.

Where are Facteur's prices?

On the Pricing page, which reads Facteur's grid. No Facteur price is written here.

Try Facteur without an account

The trial receives a test email, with no sign-up. Prices are on the Pricing page.