# Migrer depuis Mailosaur vers Facteur · Facteur

> Passer de Mailosaur à Facteur fichier par fichier : la correspondance des appels de l'API, ce qui n'a pas d'équivalent, et ce que Mailosaur publie, sourcé et daté.
> https://facteur.eu/fr/migrer-depuis-mailosaur

/ Migration

#  Changez de fournisseur sans réécrire vos tests 

 Le coût réel d'un changement d'outil de test n'est pas l'abonnement : c'est la journée passée à réécrire des assertions qui marchaient. Ici, quelques lignes par fichier changent, et la forme du test reste la vôtre.

 [ Commencer la migration ](/fr/inscription) [ La marche à suivre ](#steps) 

 

 Avant, après

## Le même test, avec Mailosaur puis avec Facteur

Les deux attendent le message. L'identifiant de l'inbox remplace le serverId, et le code se lit dans un champ du message.

 

       Avant, avec Mailosaur JavaScript 

 

```
<span class="hl-comment">// Le client Mailosaur, et le code cherché dans le corps.</span>
<span class="hl-keyword">const</span> MailosaurClient = <span class="hl-property">require</span>(<span class="hl-value">'mailosaur'</span>);
<span class="hl-keyword">const</span> mailosaur = <span class="hl-keyword">new</span> <span class="hl-type">MailosaurClient</span>(process.<span class="hl-property">env</span>.<span class="hl-property">MAILOSAUR_API_KEY</span>);

<span class="hl-comment">// Attend le premier message qui correspond, 10 secondes par défaut.</span>
<span class="hl-keyword">const</span> message = <span class="hl-keyword">await</span> mailosaur.<span class="hl-property">messages</span>.<span class="hl-property">get</span>(serverId, {
  <span class="hl-property">sentTo</span>: address,
});

<span class="hl-keyword">const</span> code = message.<span class="hl-property">html</span>.<span class="hl-property">codes</span>[0].<span class="hl-property">value</span>;
```

 Chaque appel de Mailosaur montré ici vient de sa documentation : la section Sources, plus bas, donne la page et la date de lecture.        Après, avec Facteur TypeScript 

 

```
<span class="hl-comment">// Aucun paquet Facteur à installer : un appel HTTP qui attend.</span>
<span class="hl-keyword">const</span> search = <span class="hl-keyword">new</span> <span class="hl-type">URLSearchParams</span>({
  <span class="hl-property">inbox</span>: <span class="hl-value">'j3k9x2mq'</span>,
  <span class="hl-property">sentTo</span>: address,
  <span class="hl-property">wait</span>: <span class="hl-value">'30000'</span>,
});

<span class="hl-keyword">const</span> response = <span class="hl-keyword">await</span> <span class="hl-property">fetch</span>(<span class="hl-value">'https://api.facteur.eu/v1/messages?'</span> + search, {
  <span class="hl-property">headers</span>: { <span class="hl-property">authorization</span>: <span class="hl-value">'Bearer '</span> + process.<span class="hl-property">env</span>.<span class="hl-property">FACTEUR_API_KEY</span> },
});
<span class="hl-keyword">const</span> { messages } = <span class="hl-keyword">await</span> response.<span class="hl-property">json</span>();

<span class="hl-comment">// Le code est déjà extrait, dans un champ à part.</span>
<span class="hl-keyword">const</span> code = messages[0].<span class="hl-property">otp</span>;
```

 Facteur ne publie encore aucune bibliothèque : le test appelle l'API en HTTP, et le code arrive déjà extrait dans le champ otp.  

 

 Ce qui pousse une équipe à changer

## Quatre différences, chacune vérifiable

Ce qui est écrit ici sur Mailosaur vient des sources en bas de page.

 

01

### Le volume ne se compte pas par jour

Les offres Personal et Core de Mailosaur annoncent leur volume sur la base d'une limite par jour. Chez Facteur, le volume inclus se compte sur la période de facturation ; seul le dépassement est borné par jour.

 

02

### Le SMS prévu dans le même outil

Chez Mailosaur, le SMS est affiché à part sur l'offre Core. Chez Facteur, une inbox SMS se lit avec le même appel qu'une inbox e-mail, mais le raccordement à l'opérateur n'est pas encore en service.

 

03

### Un plafond par inbox, avec ses alertes

Sur les offres payantes, un plafond par inbox et des seuils d'alerte par e-mail : un test parti en boucle s'arrête sur son propre plafond au lieu de consommer le volume de toute l'organisation.

 

04

### Le code arrive déjà extrait

Le champ otp porte le code le plus probable, codes tous ceux trouvés, links les liens. Ce que vos tests lisaient dans html.codes devient un champ au premier niveau du message.

 





 

 

 Marche à suivre

## Cinq étapes, aucune irréversible

 

1. Étape 01
    
    ### Créez un compte et une inbox
    
    L'offre gratuite suffit pour valider la migration. Notez l'identifiant de l'inbox : il joue le rôle du serverId.
2. Étape 02
    
    ### Basculez un seul test
    
    Remplacez le client et l'appel qui attend le message par la recherche de Facteur, puis lancez ce test : s'il passe, votre suite passera.
3. Étape 03
    
    ### Faites tourner la suite en double
    
    Gardez Mailosaur en parallèle une semaine, le temps de comparer les taux de réussite. Rien ne vous demande de résilier avant d'être convaincu.
4. Étape 04
    
    ### Posez vos plafonds et vos alertes
    
    Un plafond par inbox et des seuils d'alerte, sur les offres payantes. Les alertes partent par e-mail, dans un salon Slack ou Discord, ou en incident dans PagerDuty ou OpsGenie.
5. Étape 05
    
    ### Reprenez les autres fichiers à votre rythme
    
    Fichier par fichier, du plus instable au plus calme. Les deux outils cohabitent aussi longtemps que vous le voulez.
 
 

 

 Correspondance

## Table de conversion des appels de l'API

Où atterrit chacun de vos appels, si vous appelez l'API directement. Les lignes sans équivalent le disent : mieux vaut le lire ici que le découvrir en migrant.

 

    Chez Mailosaur Chez Facteur À savoir      GET /api/servers [source](#claim-api)   GET /v1/inboxes   Un server de Mailosaur s'appelle une inbox. Chacune a un identifiant de huit caractères et son propre domaine.     POST /api/messages/search [source](#claim-api)   GET /v1/messages   Les critères sont des paramètres de l'adresse : sentTo, subject, otp, hasOtp et d'autres. match=any les joint par un « ou », et wait fait attendre la recherche, cinq minutes au plus.     GET /api/messages/:id [source](#claim-api)   GET /v1/messages/{messageId}   Le message complet : otp, codes, links, le corps en texte et en HTML, les en-têtes.     GET /api/files/attachments/:id [source](#claim-api)   GET /v1/attachments/{attachmentId}   Le contenu de la pièce jointe.     GET /api/files/email/:id [source](#claim-api)   Pas de route   L'API publique ne sert pas la source brute d'un message.     GET /api/analysis/deliverability/:id [source](#claim-api)   Pas de route   Ni SPF, ni DKIM, ni DMARC, ni note de spam.     POST /api/devices/otp [source](#claim-api)   Pas de route   Le code d'une application d'authentification se calcule dans le test, en vingt lignes de Node : le guide OTP les donne.     GET /api/usage/limits [source](#claim-api)   GET /v1/capacity   Les crédits de l'organisation : le volume de l'offre, les packs, ce qui reste de chacun et sa date d'échéance.    

- Les aperçus de rendu dans plusieurs clients de messagerie et l'éditeur visuel n'ont pas d'équivalent chez Facteur, et n'en auront pas : ce n'est pas le même produit.
- Le guide de migration du portail des développeurs reprend ces appels avec leurs détails : l'en-tête d'authentification, la forme des refus, les états d'un message.
 
 

 [ Le guide de migration du portail ](https://developers.facteur.eu/fr/guides/migrate-from-mailosaur/) [ Nous écrire avant de migrer ](/fr/nous-ecrire) 

 

 Sources

## Ce que Mailosaur publie

Chaque ligne est une information que Mailosaur publie. Elle porte l'adresse de la page où nous l'avons lue et la date de lecture. Ce que nous n'avons pas pu vérifier n'y figure pas. Ces pages changent : relisez la source avant de décider.

 

1. 01
    
    La page des tarifs affiche trois offres : Personal à partir de 20 $ par mois et Core à partir de 50 $ par mois, en facturation annuelle, et Enterprise sur devis.
    
     <https://mailosaur.com/pricing> · 25/10/2026
2. 02
    
    L'offre Personal annonce 15 000 e-mails reçus par mois, sur la base d'une limite de 500 par jour. L'offre Core annonce 75 000 e-mails reçus par mois, sur la base d'une limite de 2 500 par jour.
    
     <https://mailosaur.com/pricing> · 25/10/2026
3. 03
    
    L'offre Personal comprend une boîte de réception, avec un nombre illimité d'adresses e-mail. L'offre Core en comprend plusieurs.
    
     <https://mailosaur.com/pricing> · 25/10/2026
4. 04
    
    Sur l'offre Core, la page affiche « SMS et authentification » à partir de 37,50 $ par mois, et les aperçus d'e-mails à partir de 25 $ par mois.
    
     <https://mailosaur.com/pricing> · 25/10/2026
5. 05
    
    Le client Node s'installe avec npm install mailosaur et se construit avec new MailosaurClient(clé). Sa méthode messages.get(serverId, { sentTo }) attend le premier e-mail qui correspond, 10 secondes par défaut, un délai que l'option timeout allonge.
    
     <https://mailosaur.com/docs/email-testing/nodejs> · 25/10/2026
6. 06
    
    Les codes trouvés dans un message sont dans les tableaux html.codes et text.codes, chacun avec une propriété value.
    
     <https://mailosaur.com/docs/test-cases/codes> · 25/10/2026
7. 07
    
    La référence de l'API documente GET /api/servers, POST /api/messages/search, GET /api/messages/:id, GET /api/files/attachments/:id, GET /api/files/email/:id (le fichier .eml), GET /api/analysis/deliverability/:id, POST /api/devices/otp et GET /api/usage/limits.
    
     <https://mailosaur.com/docs/api> · 25/10/2026
 
 

 Questions

## Questions fréquentes

 

   Faut-il réécrire les tests pour migrer ? +− Non. Le client et l'appel qui attend le message changent ; l'assertion raccourcit souvent, parce que le code arrive déjà extrait dans un champ. La structure de vos tests ne bouge pas.

    Que deviennent les messages déjà reçus chez Mailosaur ? +− Ils restent chez Mailosaur. Ce sont des données de test : elles se régénèrent au prochain passage de votre suite. Il n'y a rien à exporter et pas de bascule DNS à planifier.

    Une limite par jour, qu'est-ce que ça change ? +− Une suite qui tourne fort le soir d'une livraison peut toucher une limite quotidienne même quand le mois est calme. Chez Facteur, le volume inclus est celui de la période ; au-delà, des packs ou un dépassement à l'usage, borné par jour sous votre plafond de dépense. Les prix sont sur la page Tarifs.

    Pourquoi essayer dès aujourd'hui ? +− Parce que la bascule se mesure en fichiers : vous la tentez sur un seul test avant de décider, et les deux outils cohabitent le temps qu'il faut.

  

 

  

## Testez la migration sur un seul fichier

L'offre gratuite ne demande pas de carte bancaire. Un fichier, quelques lignes, et vous saurez.

 [ Créer un compte gratuit ](/fr/inscription) [ Comment migrer ](/fr/migrer)
