2008-09-18 3 views
3

Мне нужно прикрепить файл с mailx, но на данный момент у меня нет успеха.KornShell (ksh) код для отправки вложений с mailx и uuencode?

Вот мой код:

subject="Something happened" 
to="[email protected]" 
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 

Любая обратная связь будет высоко оценен.


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

ответ

3

Вы должны Concat как текст вашего сообщения и UUENCODED вложение:

$ subject="Something happened" 
$ to="[email protected]" 
$ 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

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

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

  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 

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

+0

Спасибо большое! Да, я видел, что есть mutt, который может делать простые вложения, но поскольку я не root в этом поле, мне придется иметь дело с любым хакером mailx. – 2008-09-18 20:47:11

+0

У меня возникла следующая ошибка: uuencode: незаконный вариант - m Использование: uuencode [infile] remotefile – 2008-09-18 20:56:59

 Смежные вопросы

  • Нет связанных вопросов^_^