Borta är dagarna då en publik hemsida utan att bry sig om otrevliga konsekvenser kunde ha en mailto länk som kontaktväg. Spambots som crawlar websiter, samlar in mailadresser och skickar spam till dessa har gjort att folk fått börja tänka på alternativa sätt att förmedla sin mailadress. En del ersätter möjligheten med ett kontaktformulär och kör captcha validering för att undvika att botar fyller i formuläret. Andra lägger helt enkelt in en bild med texten för mailadressen istället. Det finns flera lösningar på ”problemet” men det alla dessa har gemensamt är att de försvårar. Inte bara för en spambot utan även för vanliga användare som faktiskt vill komma i kontakt med ert företag eller dig som person. Antingen måste de spendera tid med att fylla i ett formulär och försöka tyda en captcha som oftast är allt annat än lätt tolkad. Eller så måste de skriva av din mailadress ifrån en bild. Båda dessa försvårar och drar ner helhetsintrycket av användarens besök på din site. Tänk om man kunde ha en klickbar mailto länk utan att vara rädd för att spambotarna snor den och skickar skräpmail i sådana mängder att den enklaste lösningen till sist blir att byta företagsnamn och domänadress.
Självklart finns det sådana möjligheter. För att inte kräva något extra från användaren så brukar jag själv använda mig av javascript för att klara av detta. Det är faktiskt extremt enkelt och gör att länken utåt mot användaren fungerar precis som vanligt. Men en bot har mycket svårare att tyda den. Observera att OM boten vet vad den letar efter så kan de crawla även detta.För att göra det så jobbigt som möjligt så gör man därför klokt i att inte lägga koden direkt i länken som i exemplet nedan utan i en funktion i en javascript fil. Sedan förhindrar man direkt åtkomst till dessa via sin .htaccess fil så att folk inte direkt kan ladda den och titta efter lösningen där.
För att få en ”säker” mailto länk the quick and dirty way så gör du följande
| Javascript | | copy code | | ? |
| 1 | <a href="#" onclick="var username='foo'; var domain='bar'; var countrycode='se'; this.href='m'+'a'+'i'+'l'+'t'+'o:'+username+'@'+domain+'.'+countrycode;">Skicka mail genom att klicka här!</a> |
Istället för ”Skicka mail genom att klicka här!” kan man självklart ha sin mailadress, men då blir det lite för lätt att plocka ut den. Via detta kommer man iaf inte att kunna göra på det ”enkla” sättet, vilket ofta är att crawla en site för just ”mailto:” och extrahera mailadressen därefter. Skulle man göra detta här skulle man inte få ut något som gick att använda för att skicka spm till dig iaf.
Om man, som jag nämde innan vill vara ännu säkrare så gör man följande
Javascript | copy code | ? 1 // Function placed in js file2 function getFooMailLink(linkelement) {
3 var username = 'foo';
4 var domain = 'bar';
5 var countrycode = 'se'
6
7 linkelement.href='m'+'a'+'i'+'l'+'t'+'o:'+username+'@'+domain+'.'+contrycode;
8 }
På html sidan skriver du sedan bara
| HTML | | copy code | | ? |
| 1 | <a href="#" onclick="getFooMailLink(this)">Skicka mail genom att klicka här!</a> |
Nu kommer enkelheten hos mailto länkarna att finnas till hands för era besökare men ni slipper de jobbiga ”överraskningarna” som är associerade med att använda dem. Det finns säkerligen en hel del andra lösningar också på detta så dela gärna med er.


Vilken smidigt och enkel lösning. Att jag inte tänkt på detta tidigare. Super!
Håller med Adam, en väldigt lätt och effektiv lösning. Det går dock att lösa detta med tio-rads-lösning (inklusive href=”mailto:”-raden) med hjälp av MooTools. Det som är bra med den lösningen, är att email-adressen finns i a-taggen. Inte i JavaScript-funktionen.
Dirty-versionen var dock riktigt nice
Erik: Stämmer bra att om en bot laddar ner .js filen så kan den ganska lätt få ut mailadressen ur funktionen. Om man inte vill hålla på att spärra js filen och pilla så kan man ta samma angripsvinkel som i den snabba versionen. Uppdaterade funktionen med denna kod så den blir lite bättre.
Hej Daniel,
snygg lösning, kolla stavningen på countrycode i quick n dirty exemplet, saknas ett ”u”, annars finfint!
mvh Nicklas
Tackar för att du gjorde mig uppmärksam på det. Roligt att du gillar konceptet.