Chromium and mailto: URLs
RFC 2368 specified the mailto: syntax.
It was superseded by RFC 6068, which added UTF-8 support.
It can be used to launch your email client by clicking on some URL.
Chromium uses xdg since Issue 61942.
But getting it to work correctly seems to be hard.
Overview
There is a specification for opening URLs and files.
It is called X Desktop Group (XDG), now renamed to freedesktop.org.
You can use xdg-open to open a file.
It will pick the right application automatically.
There also is xdg-email to compose new emails.
xdg-email only understands a limited subset of options:
tocc(Carbon Copy)bcc(Blind Carbon Copy)subjectbodyattach
You can launch an email client yourself like this:
xdg-open 'mailto:pmhahn@pmhahn.de?subject=Subject&body=Body'
xdg-email 'mailto:pmhahn@pmhahn.de?subject=Subject&body=Body'
xdg-email --to pmhahn@pmhahn.de --subject Subject --body Body
Issues
xdg-email supports two syntaxes:
- the split out variant using multiple arguments
- or by either passing a
mailto:URL, which is passed unmodified (with one exception)
As xdg-email only understands the options listed above, other options ones like In-Reply-To might get ignored.
But this depends on your environment.
Custom script
You can create a custom script named xdg-email-hook.sh.
It has the highest priority.
This is quiet useful to disable any further URL and command line processing:
Newer versions of Thunderbird seem to support URL-handling themselves:
thunderbird -h
# Usage: /usr/lib/thunderbird/thunderbird [ options ... ] [URL]
You can use this to pass through other mail headers like In-Reply-To.
Create a file xdg-email-hook.sh in a directory, which is searched by PATH.
- Make it executable
- Use the following content:
#!/bin/sh
exec /usr/bin/thunderbird "$@"
MAILER
You can user the environment variable MAILER to select your preferred mail client.
It has the second highest priority.
You can configure multiple clients, separated by :.
They are tried in that order until one succeeds.
Desktop Environments
Otherwise xdg-email will try to determine your Desktop Environments:
- it evaluates the environment variable
XDG_CURRENT_DESKTOP. - it uses the environment variables
KDE_FULL_SESSION,GNOME_DESKTOP_SESSION_ID,MATE_DESKTOP_SESSION_ID,DESKTOPto detect some common environments. - it uses
dbusto query the current session manager
GNOME
It will query gconftool-2 /desktop/gnome/url-handlers/mailto/command.
Or use xdg-mime x-scheme-handler/mailto.
Or use gvfs-open or gnome-open.
You can configure Thunderbird as your default handler for email like this:
xdg-mime default /usr/share/applications/thunderbird.desktop x-scheme-handler/mailto
XFCE
It will use exo-open to launch your mail client.
KDE
With KDE you have one more indirection: You need to get the name of your profile. Then you need to get the currently configured mail client:
kreadconfig5 --file emaildefaults --group Defaults --key Profile
# Standard
kreadconfig5 --file emaildefaults --group PROFILE_Standard --key EmailClient
# thunderbird %u
Further reading
Arch Linux has a good article about this issue, too. It was the one with prompted me to write this blog.