4
votes

Strapi renvoie le code d'erreur 400 lors de l'enregistrement de l'utilisateur, lorsque la vérification des e-mails est activée

  • J'ai installé le module de grille d'envoi pour strapi.

    npm i strapi-provider-email-sendgrid

  • configuré le plugin email ! [entrez la description de l'image ici
  • Paramètre de rôle et d'autorisations entrez la description de l'image ici

  • Mais toujours chaque fois que j'enregistre un utilisateur Le code d'erreur 400 est renvoyé, aucun courrier n'est également envoyé.

    POST / auth / local / register

entrez la description de l'image ici

  • Cependant, l' utilisateur est créé dans le type de contenu Utilisateurs de strapi entrez la description de l'image ici

  • Capture d'écran de la console.

    Élément de liste

Aidez-moi à y faire face !!


0 commentaires

4 Réponses :


0
votes

Il dit dans votre message.id "Auth.form.error.email.invalid".

Depuis le site Web de Sendgrid: "Un e-mail non valide se produit lorsque vous essayez d'envoyer un e-mail à une adresse formatée d'une manière qui ne répond pas aux normes de format d'e-mail Internet ou que l'e-mail n'existe pas sur le serveur de messagerie du destinataire ... vérifie l'adresse et ne la trouve pas, ils renverront un renvoi de 550 pour dire qu'il s'agit d'une adresse e-mail invalide. " https://sendgrid.com/docs/ui/sending-email/invalid-emails/

Cette adresse e-mail existe-t-elle réellement? Essayez de tester avec votre compte de messagerie personnel.


1 commentaires

Merci de votre recherche. J'ai vérifié mon tableau de bord sendgrid, et il affiche Request = 0 ( je suppose, ce qui signifie que sendgrid ne l'a pas rejeté. C'était juste qu'ils n'ont reçu aucune demande de strapi ). Je l'ai également testé avec mon propre compte de messagerie, le résultat est le même. Avez-vous d'autres suggestions?



2
votes

La gestion des erreurs du plugin email n'est pas bonne, il faut la changer!

Cette erreur est probablement fournie par cette ligne de code

Pour obtenir l'erreur correcte, je vous suggère d'ajouter console.log un console.log de l' err dans votre strapi-provider-email-sendgrid node_module .

Je sais que ce n'est pas bien de faire cela, mais ce sera le seul moyen de connaître l'erreur que vous avez.


4 commentaires

Merci de votre recherche. Je console.log l' err . Voici la sortie { messages: [ { id: 'Auth.form.error.email.invalid' } ] } . Je trouve en fait une solution à cela. J'écrase le fichier Auth.js dans \extensions\users-permissions\controllers . J'en publierai une solution complète :). Mais encore, le problème n'est pas réellement résolu. C'est juste un côté.


Oups @Jim LAURIE, j'ai en fait console.log l' err dans le fichier Auth.js. Voici l' err console.log de strapi-provider-email-sendgrid node_module code: 401, message: 'Unauthorized', response: { headers: { server: 'nginx', date: 'Thu, 26 Dec 2019 16:13:44 GMT', 'content-type': 'application/json', ...some other stuff as well }, body: { errors: [ { message: 'The provided authorization grant is invalid, expired, or revoked', field: null, help: null } ] } } }


Votre privilège sendgrid est-il correct? (config, token et blablabla ...)


Oui, ils sont. Je suis capable d'envoyer du courrier en remplaçant le code de courrier strapi par le code officiel de sendgird.J'ai utilisé le code disponible ici , ce qui signifie que la configuration, le jeton, etc. sont corrects.



2
votes

J'ai rencontré des problèmes similaires avec le fournisseur de messagerie AWS SES de Strapi, donc je laisserai ma résolution ici au cas où quelqu'un chercherait à trouver cette question dans le futur.

Ce message d'erreur est en fait renvoyé par le fournisseur de messagerie Sendgrid Strapi à la ligne 58 ( https://github.com/strapi/strapi/blob/dae9cfa415881f17ebb95d9ea3887c6a0ae0dca6/packages/strapi-provider-email-sendgrid/lib/Lindex ).js# .

Il y a un catch qui va avaler les exceptions levées par la bibliothèque Sendgrid et lancer à la place ce message générique. Voici vos options pour déterminer quelle est l'erreur réelle:

  1. Déboguer le fournisseur en se connectant au processus NodeJS en cours d'exécution
  2. Ajoutez des instructions console.log au node_modules/strapi-provider-email-sendgrid/lib/index.js dans le fichier catch et inspectez votre sortie standard
  3. Modifiez l'appel pour rejeter à l'intérieur du catch pour renvoyer la chaîne error.message réelle. Cela peut nécessiter d'examiner comment Strapi gérera les erreurs lancées à l'intérieur des contrôleurs pour s'assurer qu'il ne finit pas par se perdre dans le midlleware I18N ou d'autres points d'extension.

0 commentaires

-1
votes

J'ai le même problème lorsqu'un nouvel utilisateur est enregistré.

Mais pour penser que ce comportement est une erreur, nous devons comprendre avant les règles Strapi, je veux dire, l'erreur survient lorsque j'utilise un faux e-mail pour le test, avec mon compte e-mail l'erreur n'apparaît pas (cependant l'e-mail de confirmation n'a pas été envoyé ) Alors, Strapi vérifie-t-il que l'e-mail existe?

Si oui, ce n'est pas une erreur.

Peut-être qu'une bonne solution si vous avez différents environnements de développement, est de préparer la méthode pour ne pas tromper l'erreur si vous testez ou déboguez

if (err) {
    if (debug) {
        console.log(err);
        resolve();
    }
    reject([{ messages: [{ id: 'Auth.form.error.email.invalid' }] }]);
} else {
    resolve();
}

De l' exemple de code Jim Laurie

à quelque chose comme:

if (err) {
    reject([{ messages: [{ id: 'Auth.form.error.email.invalid' }] }]);
} else {
    resolve();
}


0 commentaires