web-dev-qa-db-pt.com

Método eficaz para ocultar e-mails de spam

Na minha página inicial, estou usando esse método para ocultar meu e-mail de spam:

<a href="admin [at] example.com"
   rel="nofollow"
   onclick="this.href='mailto:' + 'admin' + '@' + 'example.com'">Contact me</a>

O que você acha disso? É eficaz? Quais outros métodos você conhece ou usa?

176
abatishchev

Este é o método que usei, com uma inclusão do lado do servidor, por ex. <!--#include file="emailObfuscator.include" --> onde emailObfuscator.include contém o seguinte:

<!-- // http://lists.evolt.org/archive/Week-of-Mon-20040202/154813.html -->
<script type="text/javascript">
    function gen_mail_to_link(lhs,rhs,subject) {
        document.write("<a href=\"mailto");
        document.write(":" + lhs + "@");
        document.write(rhs + "?subject=" + subject + "\">" + lhs + "@" + rhs + "<\/a>");
    }
</script>

Para incluir um endereço, eu uso JavaScript:

<script type="text/javascript"> 
    gen_mail_to_link('john.doe','example.com','Feedback about your site...');
</script>
<noscript>
  <em>Email address protected by JavaScript. Activate JavaScript to see the email.</em>
</noscript>

Como tenho recebido e-mails pelo Gmail desde 2005, o spam não é um problema. Então, não posso falar de quão eficaz é esse método. Você pode querer ler este estudo (embora seja antigo) que produziu este gráfico:

enter image description here

94
Fuhrmanator

Dê uma olhada dessa forma , muito inteligente e usando css.

CSS

span.reverse {
  unicode-bidi: bidi-override;
  direction: rtl;
}

HTML

<span class="reverse">[email protected]</span>

O CSS acima substituirá a direção da leitura e apresentará o texto ao usuário na ordem correta.

Espero que ajude

Felicidades

82
roundcrisis

Trabalhando com conteúdo e attr em CSS:

.cryptedmail:after {
  content: attr(data-name) "@" attr(data-domain) "." attr(data-tld); 
}
<a href="#" class="cryptedmail"
   data-name="info"
   data-domain="example"
   data-tld="org"
   onclick="window.location.href = 'mailto:' + this.dataset.name + '@' + this.dataset.domain + '.' + this.dataset.tld; return false;"></a>

Quando o javascript está desativado, apenas o evento click não funcionará, o email ainda é exibido.

Outra abordagem interessante (pelo menos sem um evento click) seria usar a marca da direita para a esquerda para anular a direção de escrita. mais sobre isso: https://en.wikipedia.org/wiki/Right-to-left_mark

74
cyptus

Eu tenho uma visão completamente diferente disso. Eu uso MailHide para isso.

MailHide é um sistema do Google em que o usuário precisa concluir um teste reCAPTCHA para depois revelar o e-mail para eles.

52
tvanfosson

Não é minha ideia original, mas não consigo encontrar o autor:

<a href="mailto:[email protected]"
    onmouseover="this.href=this.href.replace(/x/g,'');">link</a>

Adicione quantos x quiser. Funciona perfeitamente para ler, copiar e colar, e não pode ser lido por um bot.

46
Andrew Swift

Eu acho que o único método infalível que você pode ter é criar uma página Fale comigo que é um formulário que envia para um script que envia para o seu endereço de e-mail. Dessa forma, seu endereço nunca é exposto ao público. Isso pode ser indesejável por algum motivo, mas eu acho que é uma boa solução. Muitas vezes me irrita quando sou forçado a copiar/colar o endereço de e-mail de alguém do site para o meu cliente de e-mail e enviar uma mensagem a ele; Eu prefiro fazê-lo através de um formulário no site deles. Além disso, essa abordagem permite que você envie comentários anônimos, etc. Certifique-se de proteger seu formulário usando algum tipo de esquema anti-bot, como um captcha. Há muitos deles discutidos aqui no SO.

16
rmeador

Veja Tornando os endereços de e-mail seguros de bots em uma página da Web?

Eu gosto da maneira como o Facebook e outros processam uma imagem do seu endereço de e-mail.

Eu também usei O Enkoder no passado - pensei que era muito bom ser honesto!

15
Galwegian

Sei que minha resposta não será muito apreciada por muitos, mas, por favor, considere os pontos delineados aqui antes de descer.

Qualquer coisa que seja facilmente legível por máquina será facilmente legível por máquinas pelos spammers. Mesmo que suas ações pareçam estúpidas para nós, elas não são pessoas estúpidas. Eles são inovadores e engenhosos. Eles não usam apenas bots para colher e-mails, eles têm uma infinidade de métodos à sua disposição e, além disso, eles simplesmente pagam por boas listas novas de e-mails. O que significa é que eles têm milhares de hackers de chapéu preto em todo o mundo para executar seus trabalhos. Pessoas dispostas a codificar malwares que rasparem as telas dos navegadores de outras pessoas, o que eventualmente renderiza qualquer método que você esteja tentando obter sem utilidade. Este tópico já foi lido por mais de 10 pessoas e elas estão rindo de nós. Alguns deles podem até ficar entediados às lágrimas para descobrir que não podemos colocar um novo desafio para eles.

Tenha em mente que você não está, eventualmente, tentando economizar seu tempo, mas o tempo dos outros. Por isso, considere passar um tempo extra aqui. Não há uma bala mágica fácil de executar que funcione. Se você trabalha em uma empresa que publica e-mails de 100 pessoas no site e pode reduzir um e-mail de spam por dia por pessoa, estamos falando de 36500 e-mails de spam por ano. Se a exclusão de um e-mail levar em média 5 segundos, estamos falando de cerca de 50 horas de trabalho por ano. Para não mencionar a quantidade reduzida de aborrecimento. Então, por que não gastar algumas horas nisso?

Não é só você e as pessoas que recebem o e-mail que consideram o tempo um ativo. Portanto, você deve encontrar uma maneira de ofuscar os endereços de e-mail de tal maneira, que não vale a pena quebrá-los. Se você usar algum método amplamente utilizado para ofuscar os e-mails, realmente vale a pena quebrá-lo. Uma vez que, como resultado, o cracker colocará as mãos em milhares, se não dezenas ou centenas de milhares de novos e-mails. E para eles, eles receberão dinheiro.

Então, vá em frente e codifique seu próprio método. Este é um caso raro em que reinventar a roda realmente compensa. Use um método que não seja legível por máquina e que, de preferência, exija alguma interação do usuário sem sacrificar a experiência do usuário.

Passei uns 20 minutos para codificar um exemplo do que quero dizer. No exemplo, usei o KnockoutJS simplesmente porque gosto e sei que você provavelmente não vai usá-lo sozinho. Mas é irrelevante de qualquer maneira. É uma solução personalizada que não é amplamente usada. Cracking não será uma recompensa por fazê-lo, já que o método de fazê-lo só funcionaria em uma única página na vasta Internet.

Aqui está o violino: http://jsfiddle.net/hzaw6/

O código abaixo não pretende ser um exemplo de bom código. Mas apenas uma amostra rápida de código que é muito difícil para a máquina descobrir que até lidamos com e-mails aqui. E mesmo se isso pudesse ser feito, não valeria a pena executar em grande escala.

E sim, eu sei que não funciona em IE = lte8 por causa de 'Não é possível obter propriedade' atributos 'de referência indefinida ou nula' mas eu simplesmente não me importo porque é apenas uma demonstração de método, não implementação real, e não se destina a ser usado na produção como é. Sinta-se livre para codificar o seu próprio que é mais frio, tecnicamente mais sólido etc.

Ah, e nunca, jamais, nomeie alguma coisa como e-mail ou e-mail em html ou javascript. É fácil demais raspar o DOM e o objeto window para qualquer coisa chamada mail ou email e verificar se ele contém algo que corresponda a um e-mail. É por isso que você não quer nenhuma variável que contenha e-mails em sua forma completa e é também por isso que você quer que o usuário interaja com a página antes de atribuir tais variáveis. Se o seu modelo de objeto javascript contiver algum endereço de e-mail no estado pronto do DOM, você estará expondo-o aos spammers.

O 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>

The 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);
10
Jani Hyytiäinen

Se você tem suporte php, você pode fazer algo parecido com isto:

<img src="scriptname.php">

E o scriptname.php:

<?php
header("Content-type: image/png");
// Your email address which will be shown in the image
$email    =    "[email protected]";
$length    =    (strlen($email)*8);
$im = @ImageCreate ($length, 20)
     or die ("Kann keinen neuen Gd-Bild-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 255, 255, 255); // White: 255,255,255
$text_color = ImageColorAllocate ($im, 55, 103, 122);
imagestring($im, 3,5,2,$email, $text_color);
imagepng ($im);
?>
10
Matias

Você pode tentar ocultar caracteres usando entidades html em hexa (ex: & # x40 para @). Esta é uma solução conveniente, como um navegador correto irá traduzi-lo, e você pode ter um link normal. A desvantagem é que um bot pode traduzi-lo teoricamente, mas é um pouco incomum. Eu uso isso para proteger meu e-mail no meu blog.

Outra solução é sar javascript para montar parte do endereço e decodificar imediatamente o endereço. A desvantagem é que um navegador desativado por javascript não mostrará seu endereço.

A solução mais eficaz é sar uma imagem, mas é uma dor para o usuário ter que copiar o endereço manualmente.

Sua solução é muito boa, já que você só adiciona um drawback (escrevendo manualmente o @) somente para o usuário que possui o javascript desabilitado. Você também pode ser mais seguro com:

onclick="this.href='mailto:' + 'admin' + '&#x40;' + 'domain.com'"
7
ofaurax

Um dos meus métodos favoritos é ofuscar o endereço de e-mail usando php, um exemplo clássico é converter os caracteres em valores hexadecimais como:

function myobfiscate($emailaddress){
 $email= $emailaddress;                
 $length = strlen($email);                         
 for ($i = 0; $i < $length; $i++){                
 $obfuscatedEmail .= "&#" . ord($email[$i]).";";
 }
 echo $obfuscatedEmail;
}

E então, na minha marcação, simplesmente o chamarei da seguinte forma:

<a href="mailto:<?php echo myobfiscate('[email protected]')" title="Email me!"><?php echo myobfiscate('[email protected]');</a>

Em seguida, examine sua fonte, você será agradavelmente surpreendido!

7
SimonDowdles

Spambots não interpretarão isso, porque é um método menos conhecido :)

Primeiro, defina o css:

email:before {
    content: "admin";
}

email:after {
    content: "@example.com";
}

Agora, onde quer que você queira exibir seu email, basta inserir o seguinte HTML:

<div id="email"></div>

E tada!

5
Arin

Eu uso uma combinação muito simples de CSS e jQuery, que exibe o endereço de e-mail corretamente para o usuário e também funciona quando a âncora é clicada ou pairada:

HTML:

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

CSS:

#lnkMail {
    unicode-bidi: bidi-override;
    direction: rtl;
}

jQuery:

$('#lnkMail').hover(function(){
    // here you can use whatever replace you want
    var newHref = $(this).attr('href').replace('spam', 'com');
    $(this).attr('href', newHref);
});

Aqui é um exemplo de trabalho.

4
Sergiu

Adicionando isso para referência, não sei quão desatualizada a informação pode estar, mas ela fala sobre algumas soluções simples que não requerem o uso de nenhum script.

Depois de procurar por isso eu me deparei com esta página, mas também estas páginas:

http://nadeausoftware.com/articles/2007/05/stop_spammer_email_harvesters_obfuscating_email_addresses

tente inverter o emailadress

Exemplo de HTML simples:

<bdo dir="rtl">[email protected]</bdo>
Result : [email protected]

O mesmo efeito usando CSS

CSS:
.reverse { unicode-bidi:bidi-override; direction:rtl; }
HTML:
<span class="reverse">[email protected]</span>
Result : [email protected]

Combinar isso com qualquer um dos métodos mencionados anteriormente pode até torná-lo mais eficaz

3
Johann de Vries

Uma solução fácil é usar entidades HTML em vez de caracteres reais. Por exemplo, o "[email protected]" será convertido em:

<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#101;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">email me</A>
3
Romain Linsolas

Aqui está a minha versão de trabalho:


Crie em algum lugar um contêiner com um texto de fallback:

<div id="knock_knock">Activate JavaScript, please.</div>

E adicione na parte inferior do DOM (w.r.t. a renderização) o seguinte trecho:

<script>
  (function(d,id,lhs,rhs){
    d.getElementById(id).innerHTML = "<a rel=\"nofollow\" href=\"mailto"+":"+lhs+"@"+rhs+"\">"+"Mail"+"<\/a>";
  })(window.document, "knock_knock", "your.name", "example.com");
</script>

Adiciona o hiperlink gerado ao contêiner especificado:

<div id="knock_knock"><a rel="nofollow" href="[email protected]">Mail</a></div>

Além disso, aqui está uma versão minificada:

<script>(function(d,i,l,r){d.getElementById(i).innerHTML="<a rel=\"nofollow\" href=\"mailto"+":"+l+"@"+r+"\">"+"Mail"+"<\/a>";})(window.document,"knock_knock","your.name","example.com");</script>
3
Darius M.

O melhor método para esconder endereços de e-mail só é bom até que o programador bot descubra essa "codificação" e implemente um algoritmo de descriptografia.

A opção JavaScript não funcionará muito, pois há muito rastreador que interpreta o JavaScript.

Não há resposta, imho.

2
guerda

Provavelmente há bots que reconhecem o [at] e outros disfarces como @. Então este não é um método realmente eficaz.

Claro que você poderia usar algumas codificações como codificação de URL ou referências de caracteres HTML (ou ambos):

// PHP example
// encodes every character using URL encoding (%hh)
function foo($str) {
    $retVal = '';
    $length = strlen($str);
    for ($i=0; $i<$length; $i++) $retVal.=sprintf('%%%X', ord($str[$i]));
    return $retVal;
}
// encodes every character into HTML character references (&#xhh;)
function bar($str) {
    $retVal = '';
    $length = strlen($str);
    for ($i=0; $i<$length; $i++) $retVal.=sprintf('&#x%X;', ord($str[$i]));
    return $retVal;
}

$email = '[email protected]';
echo '<a href="'.bar('mailto:?to=' . foo(','.$email.'')).'">mail me</a>';

// output
// <a href="&#x6D;&#x61;&#x69;&#x6C;&#x74;&#x6F;&#x3A;&#x3F;&#x74;&#x6F;&#x3D;&#x25;&#x32;&#x43;&#x25;&#x37;&#x35;&#x25;&#x37;&#x33;&#x25;&#x36;&#x35;&#x25;&#x37;&#x32;&#x25;&#x34;&#x30;&#x25;&#x36;&#x35;&#x25;&#x37;&#x38;&#x25;&#x36;&#x31;&#x25;&#x36;&#x44;&#x25;&#x37;&#x30;&#x25;&#x36;&#x43;&#x25;&#x36;&#x35;&#x25;&#x32;&#x45;&#x25;&#x36;&#x33;&#x25;&#x36;&#x46;&#x25;&#x36;&#x44;">mail me</a>

Mas como é legal usá-los, todo navegador/cliente de e-mail também deve lidar com essas codificações.

2
Gumbo

Eu sou um fã de SpamSpan - é ofuscado, mas ainda decifrável se JS está desabilitado. Parece funcionar também, embora eu só tenha usado por cerca de um ano em um site de baixo tráfego.

Existe também um módulo para Drupal para automaticamente transformar e-mails em SpamSpans, se você precisar de um.

2
Roman Starkov

E minha função. Eu criei olhando as respostas colocadas neste tópico.

 function antiboteEmail($email)
 {
        $html = '';

        $email = strrev($email);
        $randId = Rand(1, 500);

        $html .= '<span id="addr-'.$randId.'" class="addr">[turn javascript on to see the e-mail]</span>';
        $html .= <<<EOD
                <script>
                $(document).ready(function(){

                    var addr = "$email";
                    addr = addr.split("").reverse().join("");
                    $("#addr-$randId").html("<a href=\"mailto:" + addr + "\">" + addr + " </a>");
                });
                </script>
EOD;

        return $html;
    }

Ele usa dois métodos: direito para dir à esquerda e colocação de javascript.

1
webrama.pl

Outra opção, eu perefer font awesome ícones

Implementação do Fa:

<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">

Endereço de correio:

<a href="mailto:[email protected]"><span class="label">info<i class="fa fa-at"></i>uploadimage.club</span></a>
1
Project Mayhem

Primeiro, eu me certificaria de que o endereço de e-mail seja exibido apenas quando você tiver o JavaScript habilitado. Desta forma, não há texto simples que possa ser lido sem o javascript.

Em segundo lugar, uma maneira de implementar um recurso seguro é ficar longe da tag <button>. Essa tag precisa de uma inserção de texto entre as tags, o que a torna legível por computador. Em vez disso, tente o <input type="button"> com um manipulador de javascript para um onClick. Em seguida, use todas as técnicas mencionadas pelo otherse para implementar uma notação de email segura.

Uma outra opção é ter um botão com "Clique para ver o endereço de email". Uma vez clicada, isso se transforma em um email codificado (os caracteres em códigos HTML). Em outro clique, isso redireciona para a função "mailto: email"

Uma versão não codificada da última ideia, com endereços de email selecionáveis ​​e não selecionáveis:

<html>
<body>
<script type="text/javascript">
      e1="@domain";
      e2="me";
      e3=".extension";
email_link="mailto:"+e2+e1+e3;
</script>
<input type="text" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="text" onClick="this.value=email;" value="Click for mail-address"/>
<input type="button" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="button" onClick="this.value=email;" value="Click for mail-address"/>
</body></html>

Veja se isso é algo que você gostaria e combine com as ideias dos outros. Você nunca pode ter certeza.

1
xaddict

e o HTML_CHARACTER:

joe&#064;mail.com

saídas

[email protected]
1
T.Todua

Funciona se eu clicar com o botão direito do mouse no link e escolher "copiar URL"? Se não, não é uma situação ideal (raramente clico em um link mailto, prefiro copiar o endereço de e-mail e colá-lo no meu aplicativo de e-mail ou onde mais eu precisar em um momento específico).

Eu costumava ser bastante paranóico protegendo meu endereço de e-mail on-line (UseNet, web e afins), mas hoje em dia eu suspeito que mais "possíveis alvos de spam" são gerados de forma programática por partes locais locais. Baseio isso em ter, ocasionalmente, passado pelos logs do meu servidor de e-mail. Há muitas tentativas de entrega para endereços inexistentes (incluindo versões truncadas de spam-isca que eu pendurei no UseNet no final dos anos 90, quando a varredura de endereço era muito predominante).

1
Vatine

Eu não gosto de JavaScript e HTML para ser misturado, é por isso que eu uso essa solução. Funciona bem para mim, por enquanto.

Idéia : você pode complicar o processo fornecendo informações criptografadas nos atributos data- e descriptografando-as dentro do JS. Isso é feito simplesmente substituindo letras ou simplesmente revertendo-as.

HTML:

<span class="generate-email" data-part1="john" data-part2="gmail" data-part3="com">placeholder</span>

JS:

$(function() {
    $('.generate-email').each(function() {
        var that = $(this);
        that.html(
            that.data('part1') + '@' + that.data('part2') + '.' + that.data('part3')
        );
    });  
});

Experimente: http://jsfiddle.net/x6g9L817/

1
Mr. B.

Opção 1: Divida o endereço de email em várias partes e crie um array em JavaScript com essas partes. Em seguida, junte essas partes na ordem correta e use a propriedade .innerHTML para adicionar o endereço de e-mail à página da web.

 <span id="email">  </span>   // blank tag

 <script>
 var parts = ["info", "XXXXabc", "com", "&#46;", "&#64;"];
 var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2];
 document.getElementById("email").innerHTML=email; 
 </script>

Opção 2: usar imagem em vez de texto de email

Site do criador de imagens do texto: http://www.chxo.com/labelgen/

Opção 3: Podemos usar AT em vez de "@" e DOT em vez de "."

ou seja:

 info(AT)XXXabc(DOT)com 
1
saun4frsh

depois de usar tantas técnicas achei um jeito fácil e muito simpático, os bots pesquisam pelo @ símbolo e recentemente pesquisam pela [ant] sua variação então eu uso 2 técnicas

  1. eu escrevo meu e-mail em uma imagem como o uso do domaintolls e ele funciona perfeitamente ou
  2. para substituir o símbolo (@) por uma imagem como

@ replace e a imagem alt será alt = "@" para que o bot encontre uma imagem e qualquer ser humano a veja como um endereço normal, então se ele copiá-la, ele copiará o e-mail e o trabalho será feito para que o código seja

<p>myname<img src="http://www.traidnt.net/vb/images/mail2.gif" width="11" height="9" alt="@" />domain.com</p>
1

Existe um script de licença aberta PHP que gera javascript que codifica o e-mail: http://www.maurits.vdschee.nl/php_hide_email/ . Você pode então facilmente chamar a função php com o e-mail específico como um argumento.

1
Fanky

Eu só tenho que fornecer uma outra resposta. Eu acabei de chegar com algo divertido para brincar.

Descobri que em muitas tabelas de caracteres comuns, as letras @ e a-z reaparecem mais de uma vez. Você pode mapear os caracteres originais para os novos mapeamentos e tornar mais difícil para os robôs de spam descobrirem o que é o e-mail.

Se você percorrer a string e obter o código de caractere de uma letra, adicionar 65248 a ela e criar uma entidade html com base no número, você criará um endereço de email legível para humanos.

var str = '[email protected]';
str = str.toLowerCase().replace(/[\[email protected]]/gi, function(match, position, str){
    var num = str.charCodeAt(position);
    return ('&#' + (num + 65248) + ';');
});

Aqui está um violino de trabalho: http://jsfiddle.net/EhtSC/8/

Você pode melhorar essa abordagem criando um conjunto mais completo de mapeamentos entre os caracteres que parecem os mesmos. Mas se você copiar/colar o e-mail no bloco de notas, por exemplo, você recebe muitas caixas.

Para superar alguns dos problemas de experiência do usuário, criei o e-mail como link. Quando você clica nele, ele remapeia os caracteres de volta para seus originais.

Para melhorar isso, você pode criar mapeamentos de caracteres mais complexos, se desejar. Se você puder encontrar vários caracteres que podem ser usados, por exemplo, no lugar de 'a', por que não mapear aleatoriamente para eles.

Provavelmente não é a abordagem mais segura, mas eu realmente me diverti brincando com isso: D

0
Jani Hyytiäinen

Este é provavelmente o melhor e mais fácil protetor de e-mail na internet. Muito simples, mas tem a capacidade de adicionar todos os sinos e assobios.

Protegendo E-mail em páginas da Web

Usa JavaScript. Eu tenho usado com sucesso há anos.

0
ITI

Eu gosto da resposta do ofaurax melhor, mas eu iria modificar isso para um pouco mais de e-mail oculto:

onclick="p1='admin'; p2='domain.com'; this.href='mailto:' + p1 + '& #x40;' + p2"
0
Donny

Aqui está uma solução simples de jquery para este problema:

<script type="text/javascript">
$(document).ready(function() {
    str1="mailto:";
    str2="info";
    str3="@test.com";
    $("#email_a").attr("href", str1+str2+str3);

});
</script>

<a href="#" id="email_a"><img src="sample.png"/></a>
0
Haluk