Je sais que ma réponse ne plaira pas à beaucoup, mais veuillez considérer les points soulignés ici avant de baisser le pouce.
Tout élément facilement lisible par machine sera facilement lisible par machine par les spammeurs. Même si leurs actions nous semblent stupides, ce ne sont pas des gens stupides. Ils sont innovants et ingénieux. Ils n'utilisent pas seulement des bots pour collecter les e-mails, ils ont une pléthore de méthodes à leur disposition et en plus de cela, ils paient simplement pour de bonnes nouvelles listes d'e-mails. Ce que cela signifie, c'est qu'ils ont eu des milliers de hackers black-hat dans le monde pour exécuter leur travail. Des gens prêts à coder des logiciels malveillants qui grattent les écrans des navigateurs d'autres personnes, ce qui rend finalement inutile toute méthode que vous essayez de réaliser. Ce fil a déjà été lu par plus de 10 personnes et ils se moquent de nous. Certains d'entre eux peuvent même s'ennuyer jusqu'aux larmes pour découvrir que nous ne pouvons pas leur lancer un nouveau défi.
Gardez à l'esprit que vous n'essayez pas de gagner votre temps mais le temps des autres. Pour cette raison, veuillez envisager de passer du temps supplémentaire ici. Il n'y a pas de solution miracle facile à exécuter qui fonctionnerait. Si vous travaillez dans une entreprise qui publie 100 e-mails de personnes sur le site et que vous pouvez réduire 1 spam par jour et par personne, nous parlons de 36500 spams par an. Si la suppression d'un tel e-mail prend en moyenne 5 secondes, nous parlons de 50 heures de travail par an. Sans parler du montant réduit de la gêne. Alors pourquoi ne pas y consacrer quelques heures?
Ce n'est pas seulement vous et les personnes qui reçoivent l'e-mail qui considèrent le temps comme un atout. Par conséquent, vous devez trouver un moyen d'obscurcir les adresses e-mail de telle manière qu'il ne soit pas rentable de le casser. Si vous utilisez une méthode largement utilisée pour obscurcir les e-mails, cela vaut vraiment la peine de les casser. Depuis, le pirate mettra la main sur des milliers, voire des dizaines ou des centaines de milliers de nouveaux e-mails. Et pour eux, ils obtiendront de l'argent.
Alors, allez-y et codez votre propre méthode. C'est un cas rare où réinventer la roue est vraiment payant. Utilisez une méthode qui n'est pas lisible par machine et qui nécessitera de préférence une certaine interaction de l'utilisateur sans sacrifier l'expérience utilisateur.
J'ai passé environ 20 minutes à coder un exemple de ce que je veux dire. Dans l'exemple, j'ai utilisé KnockoutJS simplement parce que j'aime ça et je sais que vous ne l'utiliserez probablement pas vous-même. Mais ce n'est pas pertinent de toute façon. C'est une solution personnalisée qui n'est pas largement utilisée. Le casser ne sera pas une récompense pour le faire car la méthode de travail ne fonctionnerait que sur une seule page sur le vaste Internet.
Voici le violon: http://jsfiddle.net/hzaw6/
Le code ci-dessous n'est pas censé être un exemple de bon code. Mais juste un petit échantillon de code qui est très difficile pour la machine à comprendre que nous traitons même les e-mails ici. Et même si cela pouvait être fait, ça ne serait pas payant de s'exécuter à grande échelle.
Et oui, je sais que cela ne fonctionne pas sur IE = lte8 à cause de "Impossible d'obtenir les attributs de propriété" de référence non définie ou nulle "mais je m'en fiche simplement parce que c'est juste une démonstration de méthode, pas une implémentation réelle, et non destiné à être utilisé en production tel quel. N'hésitez pas à coder le vôtre qui est plus cool, techniquement plus solide etc.
Oh, et ne jamais nommer quelque chose de mail ou d'email en html ou javascript. Il est tout simplement trop facile de gratter le DOM et l'objet fenêtre pour tout ce qui est nommé courrier électronique ou e-mail et vérifier s'il contient quelque chose qui correspond à un e-mail. C'est pourquoi vous ne voulez jamais de variables contenant du courrier électronique dans sa forme complète et c'est aussi pourquoi vous voulez que l'utilisateur interagisse avec la page avant d'attribuer de telles variables. Si votre modèle d'objet javascript contient des adresses e-mail à l'état DOM prêt, vous les exposez aux spammeurs.
Le HTML:
<div data-bind="foreach: contacts">
<div class="contact">
<div>
<h5 data-bind="text: firstName + ' ' + lastName + ' / ' + department"></h5>
<ul>
<li>Phone: <span data-bind="text: phone"></span></li>
<li><a href="#999" data-bind="click:$root.reveal">E-mail</a> <span data-bind="visible: $root.msgMeToThis() != ''"><input class="merged" data-bind="value: mPrefix" readonly="readonly" /><span data-bind="text: '@' + domain"></span></span></li>
</ul>
</div>
</div>
</div>
Le JS
function ViewModel(){
var self = this;
self.contacts = ko.observableArray([
{ firstName:'John', mPrefix: 'john.doe', domain: 'domain.com', lastName: 'Doe', department: 'Sales', phone: '+358 12 345 6789' },
{ firstName:'Joe', mPrefix: 'joe.w', domain: 'wonder.com', lastName: 'Wonder', department: 'Time wasting', phone: '+358 98 765 4321' },
{ firstName:'Mike', mPrefix: 'yo', domain: 'rappin.com', lastName: 'Rophone', department: 'Audio', phone: '+358 11 222 3333' }
]);
self.msgMeToThis = ko.observable('');
self.reveal = function(m, e){
var name = e.target.attributes.href.value;
name = name.replace('#', '');
self.msgMeToThis(name);
};
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);