2011-01-25 5 views
24

¿Cuál es la mejor manera de presentar una dirección de correo electrónico en mi sitio web sin ser atacado por los spammers?¿Cuál es la mejor manera de presentar una dirección de correo electrónico en mi sitio web sin ser atacado por los spammers?

El enfoque foo at fooland dot com no es exactamente lo que estoy buscando. Necesito presentarlo de una manera que sea comprensible para las personas normales.

EDIT

Los correos electrónicos que muestran son dinámicos

+0

@Ciwee: ¿Qué tecnología de servidor estás usando? –

+0

@richard ev: ASP.NET y jQuery –

+0

@Ciwee: MVC o WebForms? –

Respuesta

7

Cómo una sobre el uso de una simple imagen que cuenta con su dirección de correo electrónico?

Una técnica para generar dinámicamente la imagen podría ser agregar un controlador ASP.NET MVC a su proyecto WebForms con un método de acción que devuelve FileResult que contiene una imagen generada dinámicamente que contiene la dirección de correo electrónico.

public class DynamicImageController : System.Web.Mvc.Controller 
{ 
    public FileResult Email(int id) 
    { 
     // TODO: Code that uses the ID value to retrieve the 
     // email address for this customer (for example) 
    } 
} 

En su formulario web se puede utilizar un control de servidor de imágenes, y establezca el ImageUrl en consecuencia (algo así como "/DynamicImage/Email/" + customerId) del código detrás.

Esta página tiene un ejemplo que ilustra cómo utilizar un FileResult para hacer una imagen (un gráfico en este escenario)

http://www.codeproject.com/KB/aspnet/MvcChartControlFileResult.aspx

+0

Eso es una solución, pero tendría que generar la imagen dinámicamente porque los correos electrónicos presentados son dinámicos. Si tuviera que generar, entonces preferiría un enfoque javascript. –

+0

+1 Simple y efectivo. –

+5

Tiene la desventaja de ser una molestia para cualquiera que necesite usar la dirección. –

2

La desventaja del enfoque basado en imágenes es que los usuarios no pueden copiarlo.

Creo que algún tipo de JavaScript que haga que el correo electrónico sea agradable. Si es lo suficientemente complicado, es posible que los bots no puedan (o no quieran) encontrarlo. Por ejemplo, supongamos que comienzas con una imagen (funciona para todos). Luego, si el usuario hace clic en él, se convierte en un texto que se puede copiar mediante magia de JavaScript.

Otra idea sería reemplazar la imagen con un texto 2 segundos después de que la página se haya cargado. Si los bots tienen prisa (¿suelen hacerlo?) Solo verán la imagen. Además, si el usuario es rápido y trató de seleccionar la imagen antes de reemplazarla, el JavaScript puede activarse de inmediato y reemplazarlo con el texto adecuado. Utilice un mouseover o haga clic en un evento o algo así.

+1

Javascript es la solución que estoy buscando.Estoy dispuesto a presentar el correo electrónico como foo-at-fooland-dot-com y colocar un bloque de javascript justo debajo en el marcado que lo convierte en [email protected] Es de copia y pasta y se ve bien. –

+0

@Ciwee: aunque mi solución difiere de la suya, creo que es una buena idea mostrar el nombre de dominio en punto com y cambiarlo dinámicamente a un enlace de correo normal (en el que se puede hacer clic) mediante JavaScript. Gracias por la inspiración, definitivamente voy a escribir un guión como ese para mis propios sitios :) – mingos

2

¿Qué le parece la codificación de Javascript? Una función de PHP como este podría ser utilizado:

function encodeEmail ($email) { 
    $ret = ''; 
    $a = '<a href="mailto:' . $email . '">' . $email . '</a>'; 
    $i = 0; 
    $c = substr($a, $i, 1); 
    while ($c != FALSE) { 
    $ret .= '%'.dechex(ord($c)); 
    $c = substr ($a, ++$i, 1); 
    } 
    return "<script type='text/javascript'>document.write(unescape('$ret'));</script>"; 
} 

(el código puede ser que necesite alguna corrección, como lo escribí sin comprobación de errores).

4

Uno que yo he empezado a utilizar es el código CSS redirección:

<span style="unicode-bidi:bidi-override; direction: rtl;">[email protected]</span> 

Usted podría utilizar algún tipo de función String.Reverse (dependiendo del idioma que usa) para insertar las direcciones de correo electrónico en dinámicas la página.

Esta es una de las maneras más fáciles y efectivas. Eche un vistazo a algunos otros aquí: https://superuser.com/questions/235937/does-email-address-obfuscation-actually-work

0

Yo diría que un enfoque de imagen si no le importa que los usuarios no puedan copiarlo.

Puede usar JavaScript para compilar la dirección a partir de algún algoritmo aleatorio que desee. También puede ponerlo en un alert() que aún se puede copiar, pero su dirección de correo electrónico nunca toca el DOM.

0

Un mejor enfoque es ir como grupos de google, no muestran el ID de correo electrónico real, solo el comienzo, pero luego, si eres humano, puedes usar el enfoque de captcha para verificar al visitante como un humano o un bot. Además, puede tener un archivo de sonido integrado en su sistema o una pantalla basada en flash, que muestra su ID de correo electrónico. Puede crear algunas acciones flash de ActionScript, se ve bien, atractivo y cumple el propósito también. Ya sea sonido o un flash, es lo que creo que se ve bien. Incluso puede crear una imagen dinámica que sigue cambiando cada vez que un usuario vuelve a cargar la página. ¡Buena suerte!

2
<a href="mailto:[email protected]">[email protected]</a> 

En serio, en mi opinión, ninguna de estas soluciones le cuesta más a sus usuarios.

Los filtros de spam son realmente buenos en estos días (casi no recibo spam en mi gmail y siempre uso mi dirección de correo electrónico) y si desea llegar a un público, su prioridad debería ser su comodidad, no la suya.

Tal vez esto es una cuestión subjetiva aunque :)

+0

Estoy de acuerdo. Mi dirección de correo electrónico se ha publicado en mi página web, en los datos de contacto de mis dominios y en muchos sitios durante al menos 5 años, y no hay un solo día en el que deba marcar más de 2 o 3 mensajes no deseados. Mi ingreso depende de esos contactos, así que no me arriesgaría. – AJJ

Cuestiones relacionadas