Hide your email from SPAMbots
There are many ways to try to hide emails from spammers. However many of them fail in more advanced spammers systems.
For example, many people suggest to use entities to display part or all the email.
I can be sure that this method works in all browsers, but not for
advanced spammers. It is quite easy to translate those entities to
letters using simple existing functions in almost any computer
language.
There are most advanced methods using Javascript, in which the email is
broken in parts or even encrypted. However, if they use the
"document.write()" function to display the real email (which most of
them do), the email will be displayed "automatically" in the source if
you save the page as HTML.
Even that is not a common spambot method, it can be done really easy.
Other disadvantage is that it may be quite easy for advanced spammers
systems to spot simple (or common) Javascript codes (like splitting the
email with "@"), increasing the probability to rank higher as real
emails.
Finally, other sites suggests to use CSS to display the email, using
the "content" property. This is a good alternative, but it lacks of
support at least in IE7.
Best methods (IMHO):
1. Using php: (for personal webpages)
Example Here
Source Code Here
The main advantage is that only humans can read the "hidden" email and
additionally your are feeding spammers with lots of fake emails every
day.
However it has 2 problems: You need to copy manually the email address
if you want to write the author and it takes so much space comparable
with a one line email address.
2. Using CSS or HTML + JS: (for any website)
I took the idea from
this article and extended it through javascript.
In this method, you write down you email in reverse order and displayed correctly using CSS or HTML.
For CSS use:
unicode-bidi:bidi-override; direction: rtl;
For HTML use the "bdo" tag:
<bdo dir="rtl"> ... </bdo>
The main advantage is that if you have javascript enabled, you are one click away of writing an email.
The disadvantage is that if you copy and paste the email, will be pasted reversed.
Compatibility:
CSS: If you have IE5 (or older) or (according to some reports) some
previous versions of Opera and Safari, you will see the email reversed.
HTML: Only the old version of Safari2 do not support it (according to what I found on Internet).
Example Here
Code:
<html>
<head>
<script type="text/javascript">function hmail(o) window.location="mailto:"+o.text.split("").reverse().join("");</script>
<style type="text/css">a.hmail {unicode-bidi:bidi-override; direction: rtl;}</style>
</head>
<body>
<a href="#Click Here" onclick="hmail(this); return false;" class="hmail">moc.oofaw@oof</a>
</body>
</html>
* Tested without problems in: IE6, Firefox3, Opera9, Chrome3, Safari4 (in higher versions should work too)
Final notes:
If you don't want to reverse your email, you can
use a title instead and apply the mail directly in javascript like this:
<a href="javascript:toMyMailPlease()">Contact me</a>
<noscript>Please enable JS to contact me</noscript>
function toMyMailPlease() {
var realmail = .... ; //use any JS ofuscator function here
window.location = "mailto:" + realmail;
return false;
}
This way you are not exposing the email even when the page is saved as HTML, but JS (and a click) will be required.
References:
JS Reverse: http://www.irt.org/script/1325.htm
CSS Reverse: http://labnol.blogspot.com/2006/03/hide-your-email-address-on-websites.html