Es wird wieder mal Zeit für einen Kurzbeitrag über die Technik. Mit Dank an alle Leidensgenossen, die mit ihren Blogs und Forenbeiträgen mir das Leben erleichtern, möchte ich das Thema Mozilla und die Behandlung von mailto:-Links schildern.

Die Links in Form von <a href=“mailto:abc@cde“></a>, die von Spammern sehr geliebt werden und deshalb nach und nach ungeschützt im freien Web immer seltener zum Einsatz kommen, sind übliche Links die das Protokoll „mailto“ nutzen. (Im HTML5 kennen wir weitere Protokolle wie „geo“ für Geokoordinaten oder „tel“ für Telefonnummern.) Die Pflicht zum Handling dieser Protokolle kommt zunächst dem Browser selbst zu. Wenn dort keine Regeln hinterlegt worden sind, wird auf die Voreinstellungen des Betriebssystems zurückgegriffen.

Firefox konnte man eine Zeit lang über prefs.js steuern. Seit der Version 10/11 (wenn nicht richtig liege) ist das aber nicht mehr so einfach. Jetzt ist mimeTypes.rdf die Wissensbasis für den Firefox, was die MIME-Typen und Protokolle anbetrifft. Es ist eine RDF-Datei – also eine XML-Anwendung, die wohlgeformt und gültig sein muss. Deshalb ist es nicht mehr so „einfach“. Mit alten sed-Kommandozeile-Skripten spielt man beim XML ein gefährliches Spiel. Man überlässt besser die Handhabung von solchen Dateien geeigneten XML-Werkzeugen. …oder dem Browser selbst.

Firefox kennt auch einen Befehl im JavaScript, der eine Protokoll – mit Zustimmung des Benutzers – in eben dieser MIME-Type-Datei registriert. Der Aufruf wird dem Benutzer in Form einer grauen Leiste über der Webseite sichtbar gemacht. Der Benutzer kann es weg-X-en oder seine Entscheidung dem Browser kundtun. Der Aufruf wird aus der Webseite heraus gestartet. Diese kann wie folgt aussehen:


&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;button onclick='navigator.registerProtocolHandler("mailto", "https://zimbra.server.de/?view=compose&amp;to=%s","Zimbra");'&gt;Zimbra registrieren&lt;/button&gt;
&lt;/body&gt;
&lt;/html&gt;

Stimmt die URL der Seite nicht mit dem Ziel (in unserem Fall „https://zimbra.server.de/“) überein, wird es nicht ausgeführt… Es sei denn, man hat in prefs.js
im Profilpfad des Benutzers „gecko.handlerService.allowRegisterFromDifferentHost“ auf „true“ gesetzt. Dann geht es auch von anderen Servern aus.

Die Parameter sind:

  • Der Link-Typ – bei uns „mailto
  • Die zu verwendende URL – in unserem Fall „https://zimbra.server.de/?view=compose&to=%s„. Das „%s“ ist der Ort, an dem die Empfängeradresse eingebunden wird.
  • Der Name für diesen Eintrag – bei uns „Zimbra

Das Eintragen hat keine Auswirkung auf die Voreinstellungen des Nutzers. Dieser kann/darf/muss die Anwendung/Webseite für die mailto-Links selbst bestimmen. Das geht über „Firefox-Einstellungen“-Fenster darin der Reiter „Anwendungen“. Hier sucht man visuell oder per Filter den Dateityp „mailto“ und kann dann aus der Liste rechts des Eintrags einen passenden Handler aussuchen. In unserem Fall wäre das „Zimbra“.

Glücklicherweise gilt diese API auch für Chrome ab Version 13! Die Details findet man unter:
https://developer.mozilla.org/en-US/docs/Web/API/navigator.registerProtocolHandler

Das „navigator.registerProtocolHandler“ muss ja nicht an einen Klick gebunden sein. onload ist auch möglich, wenn auch dem Benutzer gegenüber nicht so freundlich.