Posting your e-mail in plain text format on a web page is a guaranteed way of being signed up to a spam mailing list. When I did a Google search for “email encoder” I was disappointed to find a bunch of websites which encoded the e-mail through a JavaScript function. This method offers some protection, but is not a good method to protect you from the smarter bots that crawl the internet snapping up e-mail addresses. All it takes is a bot which can convert the HTML character entities back into its original ASCII codes to snatch your email.
In my opinion, the best way to protect your e-mail address is to encode it in an image. This is still not 100% fool proof, but the majority of bots cannot crawl and look at the text contents of an image. I couldn’t find a simple script available online that would encode an email address as an image, so I wrote a PHP script that would do the trick.
/** * @file email.php * This script generates the e-mail address text and acts as a PNG image. */ header( "Content-type: image/png" ); define("SITE_EMAIL", "email@example.com"); define("EMAIL_FONT_SIZE", 4); $intEmailLength = strlen( SITE_EMAIL ); $objImage = imagecreate( imagefontwidth( EMAIL_FONT_SIZE ) * $intEmailLength, imagefontheight( EMAIL_FONT_SIZE ) ); $intBackgroundColor = imagecolorallocate( $objImage, 255, 255, 255 ); $intTextColor = imagecolorallocate ( $objImage, 0, 0, 0 ); imagecolortransparent( $objImage, $intBackgroundColor ); imagestring ( $objImage, EMAIL_FONT_SIZE, 0, 0, SITE_EMAIL, $intTextColor ); imagepng( $objImage );
Of course, define SITE_EMAIL
with your e-mail address and EMAIL_FONT_SIZE
with the size of the font that you’d like (it was 4 in my case).
This PHP script will generate the image, so all you need to do is link to it in the following way to display it on your web page:
<img src="email.php" />