Über (mehr oder weniger) effektiven Spamschutz gibt es ja nun allerhand Aufsätze und Infos im Netz. Hier einmal mehr ein praktisches Beispiel, das ich gerade auf unseren Sites eingebaut habe (es ist nicht neu, deshalb aber nicht minder aktuell).

Variante 1: Make it Ascii.

Habe ich vor Urzeiten mal mit einer VBScript-Funktion für ASP begonnen, und nutze ich auch in .NET:

public static string EncodeToAscii(string input)
{
    StringBuilder output = new StringBuilder(string.Empty);
    if (!string.IsNullOrEmpty(input))
    {
        for (int i = 0; i < input.Length; i++)
            output.AppendFormat("&#{0};",
               Encoding.ASCII.GetBytes(input.Substring(i, 1))[0]);
    }
    return output.ToString();
}

damit kann man komplette Mailadressen usw. kodieren, sodass sie nicht mehr im Klartext zum Browser gesendet werden. Erfolgsquote nach eigener Erfahrung: hoch.

Variante 2: JavaScript bitte.

Was aber tun, wenn sich kein direkter Ascii-Code verwenden lässt, etwa weil ein dämliches MSHTML-Texteditor-Control ihn automatisch in Klartext umwandelt, der dann so in der Datenbank steht und folglich auch zum Client geht? Dann hilft nur JavaScript:

function ebSend(encodedEmail)
{
 var email = "";
 for (i=0; i < encodedEmail.length;)
 {
  var letter = "";
  letter = encodedEmail.charAt(i) + encodedEmail.charAt(i+1)
  email += String.fromCharCode(parseInt(letter,16));
  i += 2;
 }
 location.href = "mailto:" + email;
}

function ebEWrite(text)
{
 document.write(text)
}

Verwendet werden zwei Methoden: die eine generiert die URL für den korrekten Aufruf der E-Mail-Adresse, die andere sorgt dafür, dass man die E-Mail-Adresse "ausschreiben" kann, ohne Gefahr zu laufen, dass sie gespidert wird.

Das ermöglicht dann Links wie diesen: info@info.info - d.h. man kann die Adresse getrost hinschreiben, muss keine Bilder verwenden und sich auch keine Alternativen ausdenken.

Aufgerufen wird der Spaß so:

<a href="javascript:ebSend('696E666F40696E666F2E696E666F')"><script>
ebEWrite('&#105;&#110;&#102;&#111;&#64;&#105;&#110;&#102;
&#111;&#46;&#105;&#110;&#102;&#111;')</script></a>

Zuerst wird an das href-Attribut der Code für die Adresse übergeben, und innendrin von ebEWrite die Mailadresse "im Klartext" ausgeschrieben.

Wie wird der Code erstellt? Wie man will - ich war faul und habe mir kurz einen Generator zusammengeklickt, der Code hängt anbei.

Downloads

Dein Kommentar