Maillistener ne récupère pas les mails avec une apostrophe

Bonjour à tous,

j’ai donc le même problème que vous.
En debuggant l’erreur renvoyée j’ai bien vu qu’il s’agissait d’un problème de protection de caractères.

TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters
at new NodeError (internal/errors.js:322:7)
at new ClientRequest (_http_client.js:155:13)
at Object.request (http.js:94:10)
at Request.start (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:751:32)
at Request.write (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:1491:10)
at end (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:549:18)
at Immediate._onImmediate (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:578:7)
at processImmediate (internal/timers.js:464:21) {
code: 'ERR_UNESCAPED_CHARACTERS'
}

dans le fichier plugins/maillistener/resources/maillistener.js, du coté de la ligne 84, on trouve l’appel à l’API Jeedom

apiurl = urlJeedom+'&type=maillistener&messagetype=mailIncoming&email='+email+'&from='+mail.from[0].address+'&subject='+mail.subject;
	console.log(apiurl);
	request({
		url: apiurl,
		method: 'PUT',
		json: {"body": mail.text, "html": mail.html},
	},
	function (error, response, body) {
		if (!error && response.statusCode == 200) {
			console.log('contact Jeedom avec retour :',response.statusCode);
		}
	});

Comme le sujet est intégré à cette URL et qu’il contient des simples quotes, il faut donc « échapper » la chaine. J’ai utilisé encodeURI, il y a surement d’autres fonctions mais j’ai fait au plus vite surtout.

	request({
		url: encodeURI(apiurl),
		method: 'PUT',
		json: {"body": mail.text, "html": mail.html},
	},

Avec cette modif et un restart du listener, je peux à nouveau utiliser mes scénarios liés à l’alarme.
J’epère que ça vous portera chance aussi
++

6 « J'aime »