Emailadressen im Internet im Klartext anzuzeigen, ist mit einem Problem verbunden, den Spambots. Diese Roboter durchsuchen Webseiten nach Emailadressen, um diese später mit unerwünschter Emailwerbung zu überfluten.
Eine Möglichkeit die Emailadresse für Spambots unsichtbar zu machen, ist die Emailadresse in eine Grafik umzuwandeln.
Das Umwandeln geht mit dem .NET Framework relativ einfach wie dieser Snippet zeigt.
Ausprobieren kann man das auf der Webseite email2image.com.
Die zweite Möglichkeit ist JavaScript:
<script language="javascript"><!--
var localpart="name";
var domainpart="domain.com";
document.write('<a href="mailto:'+localpart+'@'+domainpart+'">'+localpart+'@'+domainpart+'</a>');
//--></script>
Das Script kennt nur 2 Variablen den local-part (vor dem @) und den domain-part (nach dem @).
Wenn die Webseite aufgerufen wird die Emailadresse per document.write als Link in die Seite geschrieben. So wird verhindert, dass die Emailadresse im Quelltext der Seite auftaucht.
Da sich die meisten ASP.NET Entwickler nicht gern mit JavaScript rumärgern, habe ich die folgende kleine Methode geschrieben:
/// <summary>
/// Gets the JavaScript.
/// </summary>
/// <param name="email">The email.</param>
/// <returns></returns>
private string GetJavaScript(string email)
{
MailAddress emailadress = new MailAddress(email);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("<script language=\"javascript\"><!--");
stringBuilder.AppendLine(string.Format("var localpart=\"{0}\";", emailadress.User));
stringBuilder.AppendLine(string.Format("var domainpart=\"{0}\";", emailadress.Host));
stringBuilder.AppendLine("document.write('<a href=\"mailto:'+localpart+'@'+domainpart+'\">'+localpart+'@'+domainpart+'</a>');");
stringBuilder.AppendLine("//--></script>");
stringBuilder.AppendLine(string.Format("<noscript>{0} [at] {1}</noscript>", emailadress.User, emailadress.Host.Replace(".", " [dot] ")));
return stringBuilder.ToString();
}
Der Aufruf der Methode ist denkbar einfach:
Die Darstellung der Emailadresse ist von einer Normalen Adresse nicht zu unterscheiden:
Wird JavaScript vom Browser nicht unterstützt wird die Adresse in folgendem Format ausgegeben: