Перейти к содержимому

Как отправить электронное письмо с приложением xls-файла, используя сценарий оболочки в качестве mimetype application / xls, не делая полученный файл нечитаемым

0
#!/bin/bash  ATTACH1=file.xls<br> SUBJECT="subj"<br> FROM=me@domain.com<br> TO=you@domain.com<br> CC=them@domain.com<br> MIME="Application/vnd.ms-excel" <br> FILE=$ATTACH1<br> boundary="---my-unlikely-text-for-mime-boundary---$$--" <br> (cat <<!<br> From: $FROM<br> To: $TO<br> Subject: $SUBJECT<br> Date: $(date +"%a, %b %e %Y %T %z")<br> Mime-Version: 1.0<br> Content-Type: multipart/mixed; boundary="$boundary"<br>   This email has attached the file<br> --$boundary<br> Content-Type: $MIME;name="$FILE"<br> Content-Disposition: attachment;filename="$FILE"<br>  !<br> uuencode $ $<br> ) | sendmail -v $<br> 

Привет,

Приведенный выше код может отправить файл xls с помощью сценария оболочки. Но проблема в том, что полученный файл не может быть открыт. Кроме того, размер файла xls становится меньше. Пример: исходный размер xls вложения составляет 17 КБ перед отправкой, но полученный файл становится размером 378 Б после отправки.

Что я могу сделать, чтобы полученный xls стал читаемым при открытии получателем? Что не так или отсутствует в приведенном выше сценарии? Пожалуйста помоги!!!!

И, кстати .. Я не могу использовать MUTT

2 567 просмотров
RaymonN спросил 10 лет назад
R 1

1 ответ

0

You need to specify the Content-Transfer-Encoding for the MIME part with the attachment. I don't know if uuencode is a standard one. Base64 is though.

You also need to send the closing boundary marker.

Your redirection into cat is wrong.

(cat << ! From: $FROM To: $TO Subject: $SUBJECT Date: $(date +"%a, %b %e %Y %T %z") Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="$boundary" This email has attached the file --$boundary Content-Type: text/plain; charset=ISO-8859-1 Please see the attachmed file. --$boundary Content-Transfer-Encoding: base64 Content-Type: $MIME;name="$ATTACH1" Content-Disposition: attachment;filename="$ATTACH1" $(base64 "$ATTACH1") --$boundary-- ! ) | sendmail -v "$TO" 

base64: команда не найдена :(

RaymonN · 10 лет назад · 0

Попробуйте Content-Transfer-Encoding: uuencode и используйте uuencode для файла, как вы делали.

glenn jackman · 10 лет назад · 0

все еще не работает .. прикрепленный файл при получении не может быть открыт

RaymonN · 10 лет назад · 0
glenn jackman ответил 10 лет назад
G 15 551