Как отправить электронное письмо с вложенным 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 ${ATTACH1} ${ATTACH1}<br>
) | sendmail -v ${TO}<br>

Привет,

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

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

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

RaymonN
источник
Куда вы кладете содержимое файла?
CVn
Вы имеете в виду код выше? Я поместил его в файл script1.sh, а затем выполнил ./script1.sh
RaymonN
Нет, я имею в виду, как данные, которые передаются по конвейеру, sendmailсодержат содержимое файла, который вы хотите прикрепить к электронному письму?
CVn
Пожалуйста, посмотрите обновленный скрипт ... теперь он отправляет файл того же размера, но теперь он содержит начало 644 PRB0045758_EDI_UPLOAD_14-01-2016.xls M / #] X; 6P @ = F5R <VEO; CTB, 2XP (C \ ^ "CQS < SI7; W) K8F] O: R! X; 6QN <SIS <STB M = 7) NG-C: & 5M87, M; 6EC <F] S; V9T + 6-O; 3IO9F9I8V4Z <W! R96% D <VAE970B M / @ H \ <W, Z4W1Y; & 5S / @ H \ <W, Z4W1Y; & 4 @ <W, Z240] (D] R86-L941A = & 4B / @ H \ M <W, Z3G5M8F5R1F] R; 6% Т ('-S.D9O <FUA = # TB9 & 0O; 6TO> 7EY> 5P @: & @ Z; 6TZ M <W, B + SX * / "] S <SI3 =' EL93X * /"] S <SI3 = ' EL97, ^ "CQS <SI7; W) K <VAE970 @
RaymonN
дубликат stackoverflow.com/q/17359/7552
Гленн Джекман

Ответы:

0

Вам необходимо указать Content-Transfer-Encoding для части MIME с вложением. Я не знаю, является ли uuencode стандартным. Base64 - это все же.

Вам также необходимо отправить маркер закрывающей границы.

Ваше перенаправление на кошку неверно.

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