Код KornShell (ksh) для отправки вложений с использованием mailx и uuencode? - PullRequest
3 голосов
/ 19 сентября 2008

Мне нужно прикрепить файл с mailx, но в настоящее время я не могу.

Вот мой код:

subject="Something happened"
to="somebody@somewhere.com"
body="Attachment Test"
attachment=/path/to/somefile.csv

uuencode $attachment | mailx -s "$subject" "$to" << EOF

The message is ready to be sent with the following file or link attachments:

somefile.csv

Note: To protect against computer viruses, e-mail programs may prevent
sending or receiving certain types of file attachments.  Check your
e-mail security settings to determine how attachments are handled.

EOF

Любая обратная связь будет принята с благодарностью.


Обновление Я добавил вложение var, чтобы избежать необходимости каждый раз использовать путь.

Ответы [ 2 ]

3 голосов
/ 19 сентября 2008

Вы должны объединить как текст вашего сообщения, так и вложение с uuencoded:

$ subject="Something happened"
$ to="somebody@somewhere.com"
$ body="Attachment Test"
$ attachment=/path/to/somefile.csv
$
$ cat >msg.txt <<EOF
> The message is ready to be sent with the following file or link attachments:
>
> somefile.csv
>
> Note: To protect against computer viruses, e-mail programs may prevent
> sending or receiving certain types of file attachments.  Check your
> e-mail security settings to determine how attachments are handled.
>
> EOF
$ ( cat msg.txt ; uuencode $attachment somefile.csv) | mailx -s "$subject" "$to"

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

1 голос
/ 19 сентября 2008

Ну, вот первые несколько проблем, которые у вас есть.

  1. Похоже, вы предполагаете, что почтовый клиент будет обрабатывать uuencode-вложения без заголовков. Этого не произойдет.

  2. Вы неправильно используете перенаправление ввода / вывода: выходные данные uuencode и документ здесь передаются в mailx, чего не может быть.

  3. Вы неправильно используете uuencode: если задан один путь, это просто имя, чтобы дать декодированный файл, а не имя входного файла. Если дважды указать файл, то декодированному файлу будет присвоено то же имя, что и тому, который был прочитан. Флаг -m заставляет base64 кодировать. Но это все равно не предоставит заголовки вложений для mailx.

Вам лучше получить копию mpack, которая будет делать то, что вы хотите.

Если вы должны это сделать, вы можете сделать что-то вроде этого:

cat <<EOF | ( cat -; uuencode -m /path/to/somefile.csv /path/to/somefile.csv; ) | mailx -s "$subject" "$to" 
place your message from the here block in your example here
EOF

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

...