Sé que mi respuesta no será del agrado de muchos, pero tenga en cuenta los puntos descritos aquí antes de rechazarla.
Cualquier cosa fácilmente legible por máquina será fácilmente legible por máquina por los spammers. A pesar de que sus acciones nos parecen estúpidas, no son personas estúpidas. Son innovadores e ingeniosos. No solo usan bots para recolectar correos electrónicos, tienen una gran cantidad de métodos a su disposición y, además de eso, simplemente pagan buenas listas nuevas de correos electrónicos. Lo que significa es que tienen miles de hackers de sombrero negro en todo el mundo para ejecutar sus trabajos. Gente lista para codificar malware que raspa las pantallas de los navegadores de otras personas, lo que eventualmente hace que cualquier método que intentes lograr sea inútil. Este hilo ya ha sido leído por más de 10 personas y se están riendo de nosotros. Algunos de ellos incluso pueden aburrirse hasta las lágrimas para descubrir que no podemos presentarles un nuevo desafío.
Tenga en cuenta que eventualmente no está tratando de ahorrar su tiempo, sino el tiempo de los demás. Debido a esto, considere pasar más tiempo aquí. No hay una bala mágica fácil de ejecutar que funcione. Si trabaja en una empresa que publica correos electrónicos de 100 personas en el sitio y puede reducir 1 correo no deseado por día por persona, estamos hablando de 36500 correos electrónicos no deseados al año. Si eliminar dicho correo electrónico tarda 5 segundos en promedio, estamos hablando de 50 horas de trabajo al año. Sin mencionar la cantidad reducida de molestia. Entonces, ¿por qué no pasar unas horas en esto?
No solo usted y las personas que reciben el correo electrónico consideran el tiempo como un activo. Por lo tanto, debe encontrar una manera de ofuscar las direcciones de correo electrónico de tal manera que no valga la pena descifrarlas. Si utiliza algún método ampliamente utilizado para ofuscar los correos electrónicos, realmente vale la pena descifrarlos. Como resultado, el cracker tendrá en sus manos miles, si no decenas o cientos de miles de correos electrónicos nuevos. Y para ellos obtendrán dinero.
Entonces, adelante y codifique su propio método. Este es un caso raro en el que reinventar la rueda realmente vale la pena. Utilice un método que no sea legible por máquina y que preferiblemente requiera cierta interacción del usuario sin sacrificar la experiencia del usuario.
Pasé unos 20 minutos para descifrar un ejemplo de lo que quiero decir. En el ejemplo, usé KnockoutJS simplemente porque me gusta y sé que probablemente no lo usarás tú mismo. Pero es irrelevante de todos modos. Es una solución personalizada que no se usa ampliamente. Romperlo no representará una recompensa por hacerlo, ya que el método de hacerlo solo funcionaría en una sola página en Internet.
Aquí está el violín: http://jsfiddle.net/hzaw6/
El siguiente código no pretende ser un ejemplo de buen código. Pero solo una muestra rápida de código que es muy difícil de comprender para la máquina, incluso manejamos correos electrónicos aquí. E incluso si se pudiera hacer, no valdrá la pena ejecutarlo a gran escala.
Y sí, sé que no funciona en IE = lte8 debido a 'No se pueden obtener atributos de propiedad' de referencia indefinida o nula ', pero simplemente no me importa porque es solo una demostración del método, no una implementación real, y no está destinado a ser utilizado en la producción tal como es. Siéntase libre de codificar el suyo, que es más fresco, técnicamente más sólido, etc.
Ah, y nunca jamás nombre algo correo o correo electrónico en html o javascript. Es demasiado fácil raspar el DOM y el objeto de ventana para cualquier cosa llamada correo o correo electrónico y verificar si contiene algo que coincida con un correo electrónico. Esta es la razón por la que no desea ninguna variable que contenga correo electrónico en su forma completa y también es la razón por la que desea que el usuario interactúe con la página antes de asignar dichas variables. Si su modelo de objeto javascript contiene direcciones de correo electrónico en estado preparado para DOM, las está exponiendo a los spammers.
El 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>
El 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);