npm i strapi-provider-email-sendgrid
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
Cependant, l' utilisateur est créé dans le type de contenu Utilisateurs de strapi
Capture d'écran de la console.
Aidez-moi à y faire face !!
4 Réponses :
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.
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?
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.
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.
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:
node_modules/strapi-provider-email-sendgrid/lib/index.js
dans le fichier catch et inspectez votre sortie standarderror.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.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(); }