Historique
MailCrypt a d’abord été développée par Paolo sous forme de contribution pour SPIP 1.8.3 puis portée sous forme de plugins pour SPIP 1.9 avec l’aide d’Alexis Roussel (voir Mailcrypt, système antispam). Elle a ensuite été intégrée au Couteau Suisse et améliorée par Patrice Vanneufville (voir De beaux liens hypertexte). Enfin, Joseph a mis à jour le plugin autonome pour SPIP 2.1 en reprenant les avancées apportées par le Couteau Suisse.
Fonctionnement
Ordinairement, SPIP transforme le raccourci suivant [->nom@domaine.org]
produit le code HTML :
<a href="mailto:nom@domaine.org" class="spip_mail">nom@domaine.org</a>
L’adresse nom@domaine.org
est de fait directement accessible à deux endroits : dans le lien (attribut href
de la balise <a>
) et dans le texte du lien.
Une fois activé, MailCrypt 2 détectera automatiquement les courriels présents dans le texte, qu’ils soient en lien et/ou en texte du lien. Ainsi, [->nom@domaine.org]
produira le code HTML :
<a href="#" title="nom..åt..domaine.org" onclick="location.href=mc_lancerlien('nom','domaine.org'); return false;" class="spip_mail">nom<span class="mcrypt"> chez </span>domaine.org</a>
Visuellement, cela ressemblera à nom chez domaine.org.
En l’absence de javascript, le lien est inopérant : un clic sur le lien ne produira rien. Cependant, l’adresse email sera visible au survol du lien dans un format compréhensible par un être humain (nom..åt..domaine.org) de même qu’un email dans le texte sera affiché sous la forme : nom chez domaine.com. Cette forme ne contient pas d’arobase (@) et ne sera donc pas détectée par un robot mais reste compréhensible par un être humain, le texte chez [1] devant être remplacé par un @ pour obtenir l’adresse email complète.
Lorsque javascript est actif, le lien devient opérationnel, la fonction mc_lancerlien
permettant de reconstituer le mail complet et de le transmettre au navigateur. Pour le visiteur, l’opération est totalement transparente. De plus, via jQuery, une fois la page chargée, le texte du mail ainsi que le titre du lien sont corrigés pour réintroduire l’@ au bon endroit. Le visiteur verra alors : nom@domaine.org.
Filtres propre et mailcrypt
MailCrypt utilise le pipeline post_propre
pour détecter et protéger les courriels. Il sera donc sans effet sur un email indiqué en dur dans un squelette ou dans une balise qui ne passe pas par la fonction propre.
Pour appliquer MailCrypt sur ces balises dans votre squelette, vous pouvez soit leur appliquer le filtre |propre
(ce qui entrainera également le traitement de tous les raccourcis SPIP) soit juste le filte |mailcrypt
qui ne traitera que les courriels.
Pour un courriel indiqué en dur dans votre squelette, vous pouvez faire :
[(#VAL{<a href="mailto:nom@domaine.com">nom@domaine.com</a>}|mailcrypt)]
Remarques sur la protection des adresses emails
Bien que MailCrypt permette de bloquer la plupart des robots collecteurs d’adresse email, il est toujours possible pour un programmeur voulant spécifiquement récupérer les mails de votre site de prendre le temps d’analyser le contenu de vos pages pour créer un programme spécifique de collecte des adresses email.
Le moyen le plus sûr pour éviter qu’un email ne soit récupéré est de ne jamais l’afficher. Il reste possible de fournir des formulaires de contact qui permettront aux visiteurs de votre site de vous envoyer un email sans pour autant connaître votre adresse. Pour cela, vous pouvez utiliser la balise #FORMULAIRE_ECRIRE_AUTEUR
, le plugin Formulaire de contact avancé ou encore le plugin Contact Libre.
Discussions par date d’activité
17 discussions
Bonjour,
La doc et le plugin évoquent/appellent un fichier
mailcrypt.js
qui n’est pas dans le répertoire du plugin. Ca ne semble pas gêner le fonctionnement, mais c’est normal ?Il y a 4 mois Cedric a fait évoluer le plugin, en insérant directement le code js en dur dans le HTML seulement s’il est nécessaire (via le pipeline affichage_final). Du coup, il n’y pas plus besoin de #INSERT_HEAD ni d’un fichier js externe.
La doc n’avait pas suivi. C’est corrigé.
Répondre à ce message
Bonjour Joseph,
A priori non, pas d’autres modifs mais je trouve cela étonnant.
Ce matin j’ai remis !== est ça passe .... donc cela doit venir d’autre part.... peut être le cache js comme tu me l’as indiqué...
En tout cas merci de tes réponses.
Répondre à ce message
Par contre une piste depuis mon message...
Dans le fichier : mailcrypt_fonctions.php
ligne 14 => AND strpos($texte,« mc_lancerlien ») !== false)
si je modifie la condition => AND strpos($texte,« mc_lancerlien ») != false)
tout fonctionne.
Est ce que je peux laisser comme ça ?
Merci par avance.
Normalement, c’est bien l’opérateur !== qui devrait être utilisé (cf. http://php.net/manual/en/function.strpos.php).
Tu es sur de ne pas avoir d’autres modifs en faisant des tests ? En effet, != est plus strict que !==. Autrement dit, cette modif n’est pas censé régler le problème. Ca doit venir d’ailleurs.
Répondre à ce message
Bonjour,
Merci pour le travail...
Je suis sous spip 3 avec la version du plugin correspondante ci-dessus.
Une question, j’ai testé le plugin et j’ai bien un #INSERT_HEAD dans mon head mais le javascript ne semble pas être appelé correctement.
Si je le met en dur ça fonctionne ...
Est-ce que ça le fait pour d’autres personnes ou c’est moi qui suis un peu nul (c’est bien possible :-) )
Merci du coup de main.
Je ne reproduis pas le problème.
Quel squelette utilisé ? C’est consultable en ligne quelque part ?
Le cache a-t-il bien été vidé ? (y compris le cache des scripts js)
Répondre à ce message
J’utilise le mailcrypt du couteau suisse depuis longtemps et j’ai un problème d’email sans @ avec le plugin formidable :
- dans les emails automatique que je reçois, l’adresse « email@domaine.com » est remplacée par « email domaine.com »
- idem dans les exports csv
Quand je désactive mailcrypt du couteau suisse, mes exports csv mentionnent bien les @.
Quelqu’un aurait-il une solution ?
Bonjour, dans la toute dernière version du Couteau Suisse, tu peux débrayer les traitement sur la balise #EMAIL. Est-ce qu’avec cela (penser à vider tous les caches) les squelettes sont-ils mieux interprétés ?
Merci Patrice.
Après maj du couteau suisse, j’ai débrayé le traitement de la balise #EMAIL comme suggéré puis testé mes formulaires et export. Le problème subsiste :
- email automatique FORMIDABLE ne contient pas les @
- export csv FORMIDABLE ne contient pas les @
Le fait que le problème subsiste est d’ailleurs assez logique puisque les fonctions d’export et d’email auto sont en php. Enfin je pense mais ne suis pas un développeur.
Le fait de désactiver MAILCRYPT avant de faire les exports n’est pas lourd. Par contre les emails automatiques sans @ posent problème car il va falloir que je prévienne un par un les destinataires de ces emails automatiques que l’adresse est amputée du @.
Quelqu’un aurait-il une autre piste ?
Je ne connais pas très bien ce plugin. Je ne sais pas de quelle façon il exporte les CSV et l’EMAIL.
S’il s’agit d’un fond, alors il faut le surcharger et lui faire passer le filtre
maildecrypt
, soit sur la balise genre #TEXTE, soit sur le fond complet, genre avec#FILTRE{maildecrypt}
..S’il s’agit d’une fonction PHP, ya peut-être aussi moyen de la surcharger...
Ce qui est sûr, c’est que Mailcrypt transforme le « @ » en
<span class='spancrypt'> </span>
, il est donc normal que l’arobase disparaisse : c’est un CSS qui établit l’image...As-tu regardé quel code source avaient tes textes finaux ? Et quel processus ils subissaient pour en arriver là ?
Au passage, as-tu le plugin « Facteur » bien à jour ? En principe, il y a un pipeline qui est déjà prévu et exploité pour que MailCrypt évite de protéger le corps des messages...
J’en profite pour ajouter à celle lame la possibilité de débrayer également certains fonds privés, mais tu ne devrais pas en avoir besoin...
Merci Patrice mais là ça commence à devenir du javanais pour moi. J’ai tenté de regarder le code source de plusieurs plugins (FORMIDAVLE, SAISIES, FACTEUR, MAILCRYPT) mais je ne comprends pas trop comment ça marche dès qu’on est en php.
Oui mes plugins sont tous à jour.
Je continue à poursuivre mes investigations
Répondre à ce message
Bonjour,
est-il possible d’enlever le mailcrypt sur quelques balises ? J’utilise spip_liostes et jue veux eviter que les adresses emails soint transform"s dans les mails envoyés ?
Merci
Rainer
Bonjour,
J’ai exactement la même question que le message précédent, je souhaiterai que les mails ne soit pas cryptés dans les emails envoyés par le plugin Clevermail.
J’ai essayé d’appliquer un TEXTE* mais du coup je perds tout le formatage.
Il faudrait donc pouvoir désactiver MailCrypt dans un squelette spécifique (celui de clevermail dans mon cas).
Est-ce possible ?
Merci pour vos idées.
Ce n’est pas chose facile (MailCrypt s’applique grâce au pipeline « post_propre ») à part la protection classique à tester :
<html>moi@ici.com</html>
.En tout cas, le débat a été posé et résolu pour la lame du Couteau Suisse ici : De beaux liens hypertexte. La méthode est un peu brutale, mais efficace.
Pour les utilisateurs du Couteau Suisse :
[(#TEXTE*|replace{@,_AROB_}|cs_traitements{TEXTE,articles}|replace{_AROB_,@})]
Sans le Couteau Suisse :
[(#TEXTE*|replace{@,_AROB_}|propre|replace{_AROB_,@})]
Et que donne
(#TEXTE* ?
Quasi la même chose que
[(#TEXTE)]
, les traitements spécifiques sur la balise #TEXTE en moins. Seuls les pipelines de typo sont appliqués dans ce cas.... D’où l’introduction par le Couteau Suisse du filtre
|cs_traitements
qui applique à la balise concernée l’ensemble des traitements et des pipelines.Merci Patrice pour cette réponse exhaustive.
Ca fonctionne tres bien, j’ai simplement ajouté en fin de traitement le filtre |liens_absolus pour les liens des images dans la newsletter, ce qui donne :
merci encore !
Bonjour,
j’ai bien lu le fil de discussion. Je réfléchis à une éventuelle alternative. J’ai lancé une discussion sur la zone pour savoir qu’elle serait l’approche la plus propre.
Bien cordialement
Merci, j’ai suivie un peu la discussion sur la zone, puis j’ai perdi le fil, quelles sont les résultats ?
J’ai réalisé un filtre maildecrypt. Ce dernier est appliqué via le pipeline facteur_pre_envoi. Ainsi, les mails envoyés sont bien « décryptés » : les emails apparaissent en clair ainsi que les liens (que ce soit en HTML ou en mode texte). Par contre, la version du mail affichée en ligne reste, quant à elle, cryptée. Et pour cette dernière, qui peut être consultée par des robots, on souhaite que le cryptage des mails soit toujours opérationnel.
Cette solution fonction ainsi pour SPIP-lettres et Clevermail, ainsi que pour les notifications par email, bref pour tout ce qui transite par le facteur. Par contre, pour SPIP-listes qui à ma connaissance ne passe pas encore par le facteur, il faut appliquer manuellement
#FILTRE{maildecrypt}
dans ses squelettes de mail.Bref, si certains veulent tester la dernière version du plugin...
Cordialement
Répondre à ce message
Je n’ai pas eu le temps de tester cette solution. Voilà qui est fait
Elle marche en effet bien pour des liens écrit en html, mas pas pour des lien encodés avec la syntaxe spip.
Merci
Rainer
Je viens d’ajouter un filtre maildecrypt au plugin. Pour l’appliquer à tout un squelette, il suffit d’ajouter à la fin
#FILTRE{maildecrypt}
.Le facteur dispose d’un pipeline pour agir sur le texte avant envoi. je vais essayer de voir s’il y a moyen d’appliquer le filtre par ce biais là ==> Du coup, il n’y aurait à faire : les mails envoyés seraient automatiquement envoyés avec la version décryptée tandis que la version consultable en ligne du mail serait quant à elle correctement cryptée ! Je creuse ça demain.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |