Documentation › Règles d’envoi
Règles d’envoi
Le serveur règle les envois. Chaque règle retient un message ou le refuse, et la réponse dit pourquoi. Les règles s’appliquent deux fois : à la création du message, puis au moment de l’envoi.
Vue d’ensemble
| Règle | Seuil | Effet |
|---|---|---|
| Montée progressive | 5, 10, 15, puis 20 e-mails par jour et par boîte, semaine après semaine. | Retient : au-delà du palier, le message attend le jour ouvré suivant. |
| Quota du jour | Par boîte : son palier, borné par son quota maximal. Par clé : un plafond, si elle en porte un. | Retient à la boîte. Refuse à la clé : key_daily_cap. |
| Heures ouvrées | Par défaut du lundi au vendredi, de 9 h à 18 h, heure de Paris, jours fériés exclus. | Retient : le message part au premier moment ouvert. |
| Validation humaine | Demandée par message, ou imposée par l’espace. | Retient : le message reste brouillon jusqu’à approve_message. |
| Désinscription | Un lien en un clic dans chaque e-mail ; une réponse « STOP ». | Refuse tout nouvel envoi à l’adresse : recipient_suppressed. |
| Coupe-circuit | 5 % de rebonds (3 % pendant la montée progressive), ou 0,1 % de plaintes. | Suspend la boîte. Refuse : inbox_suspended. |
- Retient : le message attend, et la réponse donne le départ au plus tôt. Ce n’est pas une erreur : il ne faut pas le renvoyer.
- Refuse : la réponse porte un
codestable, unmessageen français et une piste (hint). Voir Erreurs.
S’y ajoutent quatre contrôles : les limites d’essai du domaine commun, le doublon, le champ de fusion oublié et l’idempotence.
Dans les réponses du serveur, la montée progressive s’appelle « réchauffage », et les heures ouvrées « créneau d’envoi ».
Montée progressive
Chaque boîte démarre à 5 e-mails par jour, puis passe à 10, 15 et 20 : un palier par semaine, à partir du jour de sa création. Le dernier palier tient ensuite.
| Semaine | Envois par jour |
|---|---|
| 1 | 5 |
| 2 | 10 |
| 3 | 15 |
| 4 et suivantes | 20 |
Un agent ne peut ni lever ni accélérer la montée. inbox_status rend la semaine en cours, le palier et les paliers à venir (warmup).
Quota du jour
Par boîte. Le quota du jour est le plus petit de deux nombres : le palier de la semaine et le quota maximal de la boîte (20 par défaut). Il compte les messages partis depuis minuit, heure de Paris. Un brouillon ou un message en file ne le consomme qu’au moment de partir.
Quand le quota est atteint, le message suivant reste en file et part le jour ouvré suivant :
Message msg_7f2a91c4e8b34d0fa6c25e1b9d3f7a48 en file dans le fil thr_0e5a7c2b9f1d48e6a3c7b5d0e2f9a814 : de agent@exemple.fr à nadia.morel@exemple.com, « Rendez-vous de jeudi ». Départ au plus tôt : mercredi 14 octobre à 9 h. Quota du jour de la boîte : 5/5 (semaine 1 du réchauffage, palier de 5 par jour).Par clé. Une clé peut porter un plafond de messages par jour, toutes boîtes confondues. Il compte les messages créés dans la journée, brouillons compris. Au-delà, la création est refusée avec le code key_daily_cap, jusqu’au lendemain 0 h. La clé rendue par sign_up n’a pas de plafond.
Heures ouvrées
Un message part dans le créneau d’envoi de l’espace. Par défaut : du lundi au vendredi, de 9 h à 18 h, heure de Paris, hors des onze jours fériés français. Hors créneau, le message attend le premier moment ouvert : un e-mail écrit le dimanche part le lundi.
- Étalement. Deux envois d’une même boîte sont espacés : 10 minutes par défaut, plus une part d’aléa.
- Une réponse dans une conversation n’attend pas. Dès que le correspondant a écrit dans le fil,
reply_to_threadpart sans attendre le créneau et passe devant les premiers messages en file. Elle compte toujours dans le quota du jour et respecte l’étalement. Une relance sans réponse, elle, attend le créneau. send_afterrepousse un départ : le créneau et les quotas s’appliquent ensuite.
Le créneau, les jours sans envoi et l’étalement sont des réglages de l’espace, posés par un administrateur de Subagent. inbox_status rend le créneau en clair (send_window).
Validation humaine
Avec requires_approval, ou si l’espace l’impose, un message reste brouillon (draft). Seule une clé qui porte la permission approve le valide, avec approve_message. La clé rendue par sign_up ne la porte pas : un agent ne valide pas ses propres envois. Voir Brouillons et validation.
Désinscription
- Chaque e-mail porte un lien de désinscription en un clic (RFC 8058), dans ses en-têtes.
- Tant que le correspondant n’a pas écrit dans le fil, une mention de désinscription est ajoutée en pied du message.
- Une réponse « STOP » vaut désinscription.
- Une adresse désinscrite, une plainte ou une adresse morte ferment tout nouvel envoi :
recipient_suppressed. Ce qui attendait de partir vers elle est annulé.
Voir Désinscription et blocages.
Coupe-circuit
Le serveur juge les derniers envois de chaque boîte, par tranche de 100 au plus.
| Mesure | Seuil | Pendant la montée progressive |
|---|---|---|
| Rebonds | au-delà de 5 % | au-delà de 3 % |
| Plaintes (message signalé comme indésirable) | au-delà de 0,1 % | au-delà de 0,1 % |
Les parts se calculent sur 40 envois au moins : deux rebonds sur dix envois comptent pour 5 %, pas pour 20 %.
Au-delà d’un seuil, la boîte est suspendue : status = suspended, et la raison est écrite dans status_reason. Tout envoi est refusé avec le code inbox_suspended. La boîte continue de recevoir. La reprise est manuelle, par un administrateur de Subagent : avant de la demander, vérifiez la liste de destinataires.
Limites d’essai
Elles valent pour les boîtes du domaine commun, subagentmail.fr, dans un espace ouvert par sign_up.
| Depuis la vérification | Destinataires distincts, au plus |
|---|---|
| La première heure | 3 |
| Le premier jour | 5 |
| La première semaine | 10 |
| Ensuite | 10 par semaine glissante |
- Les limites se cumulent : les 5 du premier jour comprennent les 3 de la première heure.
- Tout destinataire distinct compte, y compris un correspondant qui a écrit le premier.
- Écrire de nouveau à un destinataire déjà compté ne prend pas de place.
- Au-delà, la création est refusée avec le code
trial_limit. Les autres règles s’appliquent en plus.
Un domaine enregistré et vérifié sort des limites d’essai : voir Domaines.
Doublon
Une boîte n’écrit pas deux premiers messages au même destinataire en 30 jours. Le second send_email est refusé avec le code duplicate_recipient, et la piste donne le fil existant. Pour relancer, répondez dans ce fil avec reply_to_thread : une réponse dans un fil n’est pas un doublon. Un envoi de test (test) échappe à la règle.
Champ de fusion
Un champ entre doubles accolades resté dans le sujet, le texte ou le HTML, comme {{prenom}}, bloque l’envoi : code unresolved_placeholder. Seul {{unsubscribe_url}} est accepté : le serveur le remplace par le lien de désinscription.
Ce qu’un agent ne peut pas faire
- Lever ou accélérer la montée progressive.
- Envoyer hors du créneau, sauf une réponse dans une conversation.
- Valider ses propres brouillons.
- Lever une désinscription, une plainte ou une adresse morte.
- Reprendre une boîte suspendue.