Вопрос или проблема
Я использовал следующий код для отправки электронной почты через shell-скрипт.
Код: mail -s "тема" [email protected] <<< "Текст письма"
Это сработало. Но я хочу прикрепить файл при отправке письма. Как это сделать?
Один из способов прикрепить файл — закодировать его. Например
uuencode файл_для_прикрепления файл_для_прикрепления | mail -s "тема" [email protected]
это прикрепит файл_для_прикрепления
к письму
Вы также можете использовать mime-construct
(https://linux.die.net/man/1/mime-construct) или makemime
(http://manpages.ubuntu.com/manpages/trusty/man1/makemime.1.html), если один из этих инструментов доступен.
Пример из страницы man mime-construct
:
Отправьте часть с обычным текстом и прикрепите файл, автоматически устанавливая тип содержимого файла и имя –attachment.
mime-construct --to "$recip" --subject "$file" \ --string "Вот файл, о котором я вам говорил.$nl" \ --file-attach "$file"
Конечно, также возможно вручную создать все MIME-заголовки, границы и кодировки файлов в вашем скрипте. Пример (довольно сложный) можно найти в некоторых скриптах, которые являются частью (лицензия BSD) ПО HylaFAX. Ищите функцию CreateMailMessage
в notify.sh.in
и common-functions.h.in
в каталоге util
исходного кода. (см. https://www.hylafax.org/, ftp://ftp.hylafax.org/source/)
Вы можете использовать “mutt”, если он установлен на вашем компьютере с Linux.
mutt -a "файл_для_прикрепления"
Другие параметры те же, что и в команде mail.
Ответ или решение
Для отправки электронного письма с вложением через оболочку (shell) вы можете воспользоваться несколькими вариантами. Ниже представлены наиболее распространенные методы.
1. Использование команды uuencode
Если у вас установлена утилита uuencode
, вы можете использовать её для кодирования вложения. Пример команды:
uuencode file_to_attach file_to_attach | mail -s "Тема письма" [email protected]
В этом примере файл file_to_attach
будет прикреплен к письму.
2. Использование mutt
Если на вашей системе установлен почтовый клиент mutt
, это самый простой способ отправить письмо с вложениями. Пример команды:
echo "Текст письма" | mutt -s "Тема письма" -a path/to/file_to_attach -- [email protected]
Здесь path/to/file_to_attach
— путь к вашему файлу, который вы хотите прикрепить.
3. Использование mime-construct
или makemime
Если у вас установлены инструменты mime-construct
или makemime
, вы можете использовать следующий пример с mime-construct
:
mime-construct --to "[email protected]" --subject "Тема письма" \
--string "Вот файл, о котором я говорил." \
--file-attach "file_to_attach"
Это позволяет автоматически задать тип содержимого и имя прикрепляемого файла.
4. Создание MIME-заголовков вручную
Хотя это более сложный подход, вы можете также создать все MIME-заголовки и границы вручную. Вам могут понадобиться примеры из сложных сценариев, таких как те, что содержатся в проекте HylaFAX, где вы можете найти функции создания SMTP-сообщений.
В заключение, выбирайте метод, который наиболее удобен для вас и соответствует вашим требованиям. mutt
обычно считается наиболее простым и удобным инструментом для управления электронной почтой с вложениями через командную строку.