Le flux d'autorépense Gmail a envoyé 50 e-mails à la même personne

Décrivez le problème/l’erreur/la question

Bonjour à tous !

J’ai rencontré un problème avec un workflow de réponse automatique Gmail qui a commencé à envoyer une réponse à la même adresse encore et encore, même après désactivation de tous les nœuds (ce qui est vraiment étrange).

Voici comment ça fonctionne :
Notre email est en copie d’un partenaire sur les emails envoyés aux prospects. Le premier nœud se déclenche une fois par heure pour trouver les emails de l’adresse email de notre partenaire, en filtrant par la ligne d’objet ET en ne ciblant que les emails non lus. Ensuite, il définit les variables pour l’adresse email du destinataire et l’identifiant du message. Le nœud suivant marque le message comme lu en utilisant l’identifiant. Ensuite, le nœud suivant répond dans la conversation en utilisant l’identifiant du fil d’attente du déclencheur. Puis il ajoute le prospect à un tableau et crée un prospect dans Zoho.

Cela a commencé il y a une semaine, et nous l’avons remarqué récemment. La partie la plus étrange est qu’il a continué à envoyer des emails même après désactivation des nœuds, c’est pourquoi nous avons dépublié le workflow juste pour être sûr.

J’ai vu des fils de discussion similaires ici, mais celui-ci semble un peu différent : nous filtrons les messages non lus, mais il récupère toujours le même email encore et encore.

Informations sur votre configuration n8n

  • Version de n8n : 2.20.7
  • Exécution de n8n via n8n cloud

@Arsen la partie « toujours envoyer après la désactivation » concerne les exécutions en file d’attente qui se sont déclenchées avant la désactivation — n8n Cloud n’annule pas les exécutions en cours, il arrête juste les NOUVEAUX déclencheurs. donc les 50 réponses sont 50 exécutions en attente qui étaient déjà dans la file.

la cause racine des 50 en premier lieu est probablement l’ordre — si l’étape mark-as-read échoue ou s’exécute lentement, le prochain sondage horaire voit le même message non lu et déclenche une autre réponse. est-ce que l’étape mark-as-read a réellement réussi dans chaque journal d’exécution, ou a-t-elle échoué silencieusement ?

Bonjour @achamm !

Merci pour ta réponse. En fait, le nœud mark-as-read s’est exécuté avec succès à chaque fois, autant que je puisse le voir.

Corrigez-moi si je me trompe, le mode principal n’est-il pas utilisé par la plupart des plans Standard Cloud (Starter/Pro)?
Si c’est le cas, il n’y aura pas de travaux en file d’attente.

@Arsen , êtes-vous sur un plan Enterprise?

Bienvenue dans la communauté n8n @Arsen
Veuillez mettre à jour votre instance vers la v2.21.7 via le panneau d’administration.
Revenez au flux, désactivez les nœuds et réactivez-les. Publiez.
Mettez en exécution, et renvoyez-nous le résultat si possible.

@kjooleng non, forfait de démarrage

Aussi une chose bizarre - l’email a été envoyé à la même personne 50 fois, mais l’adresse de cette personne n’a été ajoutée à la feuille de calcul qu’une seule fois

bonjour @Arsen

Pourrais-tu partager le workflow ?

Tu peux sélectionner tous les nœuds avec Ctrl+A et les copier avec Ctrl+C. Ensuite, colle le contenu après avoir appuyé sur le bouton </> avec Ctrl+V.

Je vois que ton déclencheur Gmail contient plus d’un élément, ce qui peut causer des problèmes si les nœuds suivants n’étaient pas configurés correctement

Bonjour @Arsen ,

Cela fonctionnait bien avant il y a une semaine? Qu’est-ce qui a changé depuis?

Le véritable problème est une condition de concurrence entre le trigger et le nœud mark-as-read. Gmail retourne les e-mails non lus en fonction du statut au moment de la requête API. Si le trigger récupère l’e-mail et que le nœud mark-as-read n’a pas encore été exécuté, l’exécution suivante peut récupérer la même e-mail à nouveau, surtout si les exécutions se chevauchent.

La meilleure solution est d’ajouter un filtre de déduplication basé sur l’ID de message après le trigger. Stocke les ID de messages traités dans un Static Data Store ou une Google Sheet. Avant le traitement, vérifie si l’ID existe déjà.

Quel plan utilises-tu ? Cloud ou auto-hébergé ?

Salut @barn4k !

Je peux envoyer des captures d’écran si ça te convient

Salut @Kemal_Automation !

J’utilise n8n cloud.

Je pense que ça aurait du sens que l’email soit ajouté à la feuille de calcul plusieurs fois aussi

Bonjour @Arsen
Peux-tu vérifier les paramètres de réponse automatique Gmail ?

Tu vas à Gmail > Paramètres > Général > Répondeur automatique (Répondeur automatique désactivé/activé).

Si la réponse automatique est désactivée. Ensuite, assure-toi de suivre ces étapes.

Testé-le sur un petit périmètre en dupliquant le flux de travail, en changeant simplement les paramètres au lieu de lire l’e-mail du partenaire pour lire ton e-mail (autre que celui en copie cachée)

  1. Garde tous tes paramètres et utilise un seul e-mail (nouvel e-mail à partir duquel tu peux envoyer ou recevoir pour tester)

  2. Réduis le délai d’activation à 1 minute pour le test uniquement,

  3. Arrête-toi à la réponse au message (puisque c’est le blocage)

    Assure-toi de faire un test de flux étape par étape (avant de publier)
    Si ça fonctionne bien, alors publie le petit périmètre
    teste-le à nouveau en production, et ça devrait fonctionner !

Exactement, si le même e-mail réapparaît constamment dans le spreadsheet, cela confirme le problème.

La solution est un nœud de code directement après le déclencheur, qui vérifie si le Message-ID a déjà été traité. Si tu as besoin d’aide pour la configuration exacte, je suis ravi de t’aider !

@Arsen dans les journaux d’exécution, est-ce que 49 de ces exécutions montrent un échec/erreur sur le nœud immédiatement après le nœud de réponse ? Si oui, le workflow complétait la réponse avec succès, puis rencontrait une erreur en aval, mais comme n8n avait déjà envoyé l’email, les dégâts étaient faits.

qu’est-ce que le déclencheur Gmail retourne quand il interroge ?

@sergeys @Kemal_Automation

Merci les gars pour vos réponses !

C’est exactement ça ; il n’y avait AUCUNE erreur dans les exécutions, et chaque exécution s’est déroulée avec succès. L’e-mail n’était pas ajouté plusieurs fois au tableur. Il a été ajouté une fois, et c’est tout

Donc si aucune erreur n’est présente et que le tableau ne contient qu’une seule entrée, le problème provient probablement du fait que la réponse de ton partenaire marque l’e-mail comme non lue dans Gmail. De cette façon, le déclencheur la récupère à nouveau chaque heure. Comme solution, ajoute un filtre directement après le déclencheur qui vérifie si l’e-mail a été reçue au cours des 2 dernières heures. Les anciens e-mails ne peuvent ainsi plus se retrouver dans la boucle.

@Kemal_Automation

Merci !

En fait, ce n’est pas notre partenaire qui ne répond pas, c’est nous qui répondons aux emails. Nous répondons uniquement au destinataire et nous excluons notre partenaire de toute façon. C’est pour ça que c’est vraiment bizarre

Ok donc la théorie des partenaires est écartée. Mon prochain soupçon est que Gmail remarque l’e-mail en interne après ta réponse parce que le fil de discussion est mis à jour.

Ajoute comme test après le nœud « Mark as Read » une courte pause de 1-2 secondes, puis à nouveau « Mark as Read ». Parfois, Gmail a besoin d’un moment pour que le changement prenne effet.

ok en regardant les screenshots du workflow — Gmail Trigger avec filtre (non lu + sender partenaire + subject), Mark as Read utilisant $('Edit Fields').item.json.id, Reply utilisant $('Gmail Trigger').item.json.threadId. tout ça a l’air bon.

si 50 exécutions horaires séparées trouvent toutes le MÊME message non lu ET que mark-as-read continue de rapporter un succès, quelque chose remet le mail à non lu entre les sondages — ça pourrait être une règle de filtre Gmail, l’app mobile, ou un autre client IMAP qui touche à la boîte de réception. tu vas pas corriger cette cause racine de l’intérieur de n8n. ce que tu PEUX corriger c’est faire en sorte que le workflow refuse d’envoyer la même réponse deux fois quel que soit l’état de lecture.

dépose ce nœud Code entre Gmail Trigger et Edit Fields. il persiste les IDs de messages traités dans les données statiques du workflow n8n donc les doublons se font filtrer à travers les exécutions :

$getWorkflowStaticData('global') persiste à travers les exécutions sur n8n Cloud donc la liste d’IDs se conserve. la première fois qu’un message arrive il se fait enregistrer + passe en aval ; la deuxième fois le filtre le retire et le workflow court-circuite à zéro items. maintenant même si Gmail continue de remettre non lu, tu envoies la réponse exactement une fois par ID de message unique.