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

2474
RaymonN
#!/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

0
Где вы размещаете содержимое файла? a CVn 8 лет назад 0
Вы имеете в виду код выше? Я помещаю его в файл script1.sh, а затем выполняю по ./script1.sh RaymonN 8 лет назад 0
Нет, я имею в виду, как данные, которые передаются в `sendmail`, содержат содержимое файла, который вы хотите прикрепить к электронному письму? a CVn 8 лет назад 0
Пожалуйста, посмотрите обновленный скрипт ... теперь он отправляет файл того же размера, но теперь он содержит начало 644 PRB0045758_EDI_UPLOAD_14-01-2016.xls M / #] X; 6P @ = F5R7EY> 5P @: & @ Z; 6TZ M RaymonN 8 лет назад 0
дубликат http://stackoverflow.com/q/17359/7552 glenn jackman 8 лет назад 0
нет его не дублировать RaymonN 8 лет назад 0

1 ответ на вопрос

0
glenn jackman

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 8 лет назад 0
Попробуйте `Content-Transfer-Encoding: uuencode` и используйте uuencode для файла, как вы делали. glenn jackman 8 лет назад 0
все еще не работает .. прикрепленный файл при получении не может быть открыт RaymonN 8 лет назад 0

Похожие вопросы