Как отправить электронное письмо с вложенным xls-файлом, используя сценарий оболочки в качестве mimetype application/xls, не делая полученный файл нечитаемым
#!/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
1 ответ
Вам необходимо указать 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"
Вместо того, чтобы создавать свою собственную программу для отправки почты, просто используйте одну из многих, которые уже существуют. Вам нужен почтовый пользовательский агент (MUA). Есть много вариантов для отправки почты в командной строке. Например, используя Mutt:
mutt recipient@example.org -s "My example subject" -a attachment.xlsx < mailbody.txt
Будет отправлено письмо на адрес recipient@example.org с чтением текста тела письма из файла "mailbody.txt" с вложением attachment.xlsx. Mutt сделает за вас все мельчайшие подробности, например, правильно закодирует тело письма и выберет правильный тип MIME для вложения.
Конечно, вы можете написать все сами, но, возможно, вам придется потратить несколько месяцев...