Как с помощью Thunderbird можно прикрепить из командной строки файл, содержащий запятую (,) в имени?

thunderbird -compose "attachment='$HOME/test test.txt'" строительство.
thunderbird -compose "attachment='$HOME/test, test.txt'" не работает и выдает file does not exist сообщение об ошибке.

это должно быть из - за того, как Thunderbird обрабатывает аргументы командной строки; например,

thunderbird -compose "to='name@mail.com',attachment='~/file.txt'"

compose аргументы разделяются , и именно поэтому иметь , в имени файла ломает вещи. Однако я не могу придумать способ "избежать" запятых в имени файла.

Примечание:

  • В Thunderbird 3+, использование протокола file:// не требуется.

и

thunderbird -compose "attachment='$HOME/test test.txt'"

и

thunderbird -compose "attachment='file://$HOME/test test.txt'"

работа.

ни

thunderbird -compose "attachment='$HOME/test, test.txt'"

nor

thunderbird -compose "attachment='file://$HOME/test, test.txt'"

строительство.

7
задан Omid
21.02.2023 22:56 Количество просмотров материала 2512
Распечатать страницу

1 ответ

используя идею url-кодирования имен файлов, предложенную @Etan Reisner (в комментарии к моему вопросу выше), я взломал решение, которое я записываю здесь на благо других в сообществе. В приведенном ниже фрагменте кода ${filename} - полное имя файла (включая путь), чтобы быть прикреплены.

#!/bin/bash

# "A safe way to URL encode is to encode every single byte, even
# those that would've been allowed." This is done by first
# converting every byte to its 2-byte hex code using `hexdump' and
# then adding the prefix `%' to each 2-byte hex code pair using
# `sed'.
#
# Attribution: https://stackoverflow.com/a/7506695

filenameurlencoded=$(echo -ne "${filename}" | \
hexdump -v -e '/1 "%02x"' | \
sed 's/\(..\)/%/g')

filenamenopath="$(basename ${filename})"
emailsubject="${filenamenopath}"
emailbody="\"${filenamenopath}\" is attached."
emailattachment="file:///${filenameurlencoded}"

# Syntax of -compose command line option: double-quotes enclose
# full comma-separated list of arguments passed to -compose,
# whereas single quotes are used to group items for the same
# argument.
#
# Attribution: http://kb.mozillazine.org/Command_line_arguments_(Thunderbird)

thunderbird -compose "subject='${emailsubject}',body='${emailbody}',attachment='${emailattachment}'"
0
отвечен Omid 2023-02-23 06:44

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх