xdg-email fails to attach filesnames with a comma "," to thunderbird
When attaching a file to Thunderbird using xdg-email, it passes the full path to Thunderbird, as possible with TB3+. However, the syntax of TB uses the comma "," as filename separator. If a filename already contains a comma, Thunderbird will not find it and fails to attach it.
This could probably be fixed in Thunderbird, but would require them to change their command line syntax which is a big change. A different solution is to change from the "full path" syntax to "file://" using a full URL-encodeing?
Example: the file is located at "/home/someuser/file, name.txt"
Calling xdg-email with xdg-email --attach '/home/someuser/file, name.txt'
will produce (XDG_UTILS_DEBUG_LEVEL=1
)
/usr/lib/thunderbird/thunderbird.sh -compose "attachment='/home/someuser/file, name.txt'"
And Thunderbird expects two files now, one "/home/someuser/file" and the other "name.txt". Instead
/usr/lib/thunderbird/thunderbird.sh -compose "attachment='file///home/someuser/file%2C%20name.txt'"
works.
As it turned out, not much needs to be changed. I created a crude patch to change from "file name scheme" to "uri scheme" against the current (I think) version with (for me) solves the issue. Note that I'm not a bash expert, so the solution might give room for improvement.
570c570,571
< ATTACH=$(/bin/echo -e $(echo "$MAILTO" | grep '^attach=' | sed 's/^attach=//;s/%\(..\)/\\x\1/g' | awk '{ printf "%s,",$0 }' | sed 's/,$//'))
---
> ATTACH=$(/bin/echo -e $(echo "$MAILTO" | grep '^attach=' | sed 's/^attach=/file:\/\//' ))
> ATTACH=$(echo $ATTACH | tr '\n' ',' | sed 's/,$//')
I initially posted it on bugs.launchpad.net here: https://bugs.launchpad.net/ubuntu/+source/xdg-utils/+bug/1823689