V4 : Err 400 curl API mailjet suite erreur charset dans json_encode #2

Closed
opened 3 years ago by JLuc · 5 comments
JLuc commented 3 years ago
Collaborator

Voulant être notifié des mails en erreur, j'ai upgradé facteur et j'ai testé l'option "Utiliser Mailjet". (Au passage, le label devrait plutôt être "Utiliser l'API Mailjet")

Mes identifiants sont corrects car l'envoi via facteur par le SMTP de mailjet marche bien, et ça marche aussi quand j'appelle curl depuis ma machine locale ou depuis une session SSH sur le serveur (avec le script shell de https://dev.mailjet.com/email/guides/send-api-V3/#tooltip-1 )

Mais en testant par le formulaire de test j'obtiens une erreur Status 400.

Le fichier mailjet.log donne :

20:09:49 IP (pid 89276) :Pri:debug: sendRequest via curl
20:09:49 IP (pid 89276) :Pri:debug:
20:09:49 IP (pid 89276) :Pri:debug: POST api.mailjet.com/v3/send FAIL resultat:
20:09:49 IP (pid 89276) :Pri:ERREUR: api.mailjet.com/v3/send : Error Status 400

Dans la méthode sendRequest l'url interrogée est du type https://clé1:clé2@api.mailjet.com/v3/send

Rq : quand je force la requête par recuperer_url plutôt que curl, c'est une erreur 500 qui est récupérée.

POST api.mailjet.com/v3/send FAIL resultat:
ERREUR: api.mailjet.com/v3/send : Error Status 500
Voulant être notifié des mails en erreur, j'ai upgradé facteur et j'ai testé l'option "Utiliser Mailjet". (Au passage, le label devrait plutôt être "Utiliser l'API Mailjet") Mes identifiants sont corrects car l'envoi via facteur par le SMTP de mailjet marche bien, et ça marche aussi quand j'appelle curl depuis ma machine locale ou depuis une session SSH sur le serveur (avec le script shell de https://dev.mailjet.com/email/guides/send-api-V3/#tooltip-1 ) Mais en testant par le formulaire de test j'obtiens une erreur Status 400. Le fichier mailjet.log donne : ``` 20:09:49 IP (pid 89276) :Pri:debug: sendRequest via curl 20:09:49 IP (pid 89276) :Pri:debug: 20:09:49 IP (pid 89276) :Pri:debug: POST api.mailjet.com/v3/send FAIL resultat: 20:09:49 IP (pid 89276) :Pri:ERREUR: api.mailjet.com/v3/send : Error Status 400 ``` Dans la méthode sendRequest l'url interrogée est du type https://clé1:clé2@api.mailjet.com/v3/send Rq : quand je force la requête par recuperer_url plutôt que curl, c'est une erreur 500 qui est récupérée. ``` POST api.mailjet.com/v3/send FAIL resultat: ERREUR: api.mailjet.com/v3/send : Error Status 500 ```
Poster
Collaborator

Selon API errors un code de retour 400 correspond en fait à One or more parameters are missing or maybe misspelled (unknown resource or action). En effet, l'url requêtée est correcte : GET api.mailjet.com/v3/REST/sender?Email=contact%40monsite.ext et le résultat est { "Count" : 1, "Data" : [{ "CreatedAt" : "2017-08-09T21:15:00Z", "DNSID" : 1518xxxx, "Email" : "contact@monsite.ext", "EmailType" : "unknown", "Filename" : "", "ID" : 43xxx, "IsDefaultSender" : false, "Name" : "", "Status" : "Active" }], "Total" : 1 } : Ça semble correct

Mais le problème vient du json_encode de la variable $data, qui est vide après le json_encode, et les data ne sont pas transmises. Un log supplémentaire révèle l l'erreur :

ERR5 : Malformed UTF-8 characters, possibly incorrectly encoded
Selon [API errors](https://dev.mailjet.com/email/reference/overview/errors/) un code de retour 400 correspond en fait à `One or more parameters are missing or maybe misspelled (unknown resource or action).` En effet, l'url requêtée est correcte : `GET api.mailjet.com/v3/REST/sender?Email=contact%40monsite.ext` et le résultat est `{ "Count" : 1, "Data" : [{ "CreatedAt" : "2017-08-09T21:15:00Z", "DNSID" : 1518xxxx, "Email" : "contact@monsite.ext", "EmailType" : "unknown", "Filename" : "", "ID" : 43xxx, "IsDefaultSender" : false, "Name" : "", "Status" : "Active" }], "Total" : 1 }` : Ça semble correct Mais le problème vient du json_encode de la variable $data, qui est vide après le `json_encode`, et les data ne sont pas transmises. Un log supplémentaire révèle l l'erreur : ``` ERR5 : Malformed UTF-8 characters, possibly incorrectly encoded ```
Poster
Collaborator

Le problème disparaît si je désactive l'option "Convertir en ISO-8859-1".

Serait-ce donc encore la fonction de conversion qui foire ?

Le problème disparaît si je désactive l'option "Convertir en ISO-8859-1". Serait-ce donc encore la fonction de conversion qui foire ?
JLuc changed title from V4 : Err 400 sur curl API mailjet to V4 : Err 400 curl API mailjet suite erreur charset dans json_encode 3 years ago
Owner

Ben non, c'est qu'il faut pas convertir en ISO parce que l'API Mailjet veut du UTF et surtout pas de l'ISO
(sérieusement cette case à cocher "convertir en iso" est totalement anachronique...)

Ben non, c'est qu'il faut pas convertir en ISO parce que l'API Mailjet veut du UTF et surtout pas de l'ISO (sérieusement cette case à cocher "convertir en iso" est totalement anachronique...)
Poster
Collaborator

Ah il me semblait que ISO était plus safe pour les mails mais je n'ai aucune religion à ce sujet.

Du coup il faudrait supprimer cette option au moins pour l'API : cf #5

Ah il me semblait que ISO était plus safe pour les mails mais je n'ai aucune religion à ce sujet. Du coup il faudrait supprimer cette option au moins pour l'API : cf #5
Poster
Collaborator

Réglé en tant que tel. Précisé avec #5

Réglé en tant que tel. Précisé avec #5
JLuc closed this issue 3 years ago
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.