Вопрос или проблема
Мне нужно иметь возможность отправлять почту из bash-скрипта с следующими параметрами: адрес получателя, адрес отправителя, тема, текст сообщения и вложение.
Я могу отправлять все это с помощью mutt, кроме того, что, что бы я ни делал, адрес “От” не устанавливается правильно:
например, mutt -e "my_hdr From:${FROM}")...
Я также могу использовать sendmail или mailx, но не могу правильно настроить вложение и текст сообщения.
например, sendmail -t -a file
Вы можете задать From:
и другие параметры в конфигурационном файле. Текст сообщения должен приходить из стандартного ввода.
Например:
cat msg.txt | mutt [email protected] -F ~/.mutt_settings -s "это моя тема" -a file.zip
Для файла настроек скопируйте уже работающий файл настроек и измените строку From:
my_hdr From: Супер Человек <[email protected]>
Существует два способа создания электронных писем: через совместимый интерфейс sendmail или через PORT 25/TCP. Независимо от языка программирования или сценариев, который вы используете, вы найдете примеры для обоих случаев.
Известно, что при использовании совместимого интерфейса sendmail, т.е. напрямую через систему, а не через порт 25, только root может изменить поле From.
При построении писем через PORT 25/TCP вы обычно можете строить тело письма с любым полем FROM: по вашему усмотрению.
Другой вариант — установить его глобально, как говорит @Juancho, для одного сервера, но тогда вы ограничены только одним адресом From:
Другой вариант — отправлять их от имени root, чего я не советую.
Это код, необходимый для переопределения .muttrc из скрипта…
echo "ЭТО ТЕКСТ СООБЩЕНИЯ" | mutt -e "send-hook . \"my_hdr From: Техническая Поддержка <[email protected]>\"" -s "ЭТО ТЕМА" [email protected] -a test.log
СПАСИБО!
Ответ или решение
Чтобы отправить электронное письмо из Linux с указанием адресов получателя (To), отправителя (From), темы (Subject), текста тела и вложений, вы можете использовать несколько утилит, таких как mutt
, sendmail
или mailx
. В этом ответе мы подробно рассмотрим, как это сделать с помощью этих инструментов.
Использование mutt
mutt
— это мощный почтовый клиент для UNIX, который предлагает возможность отправки писем с вложениями и настраиваемыми заголовками.
-
Установка mutt:
Если у вас еще не установленmutt
, вы можете установить его с помощью пакетного менеджера вашей системы. Например, в Debian/Ubuntu выполните следующую команду:sudo apt-get install mutt
-
Настройка From-адреса в конфигурационном файле:
Вам нужно создать или отредактировать файл конфигурации~/.muttrc
. Добавьте строку для указания адреса отправителя:my_hdr From: TechSupport <youremail@example.com>
-
Отправка письма с помощью скрипта:
Пример скрипта для отправки письма с использованиемmutt
:echo "Это тело письма." | mutt -e "my_hdr From: TechSupport <youremail@example.com>" -s "Тема вашего письма" -a файл_вложения.zip -- recipient@example.com
Использование sendmail
Инструмент sendmail
позволяет отправлять письма через стандартный интерфейс отправки почты.
- Отправка письма с вложением:
Пример использованияsendmail
с вложениями:(echo "Subject: Тема вашего письма"; echo "From: TechSupport <youremail@example.com>"; echo "To: recipient@example.com"; echo "MIME-Version: 1.0"; echo "Content-Type: multipart/mixed; boundary=\"boundary\""; echo ""; echo "--boundary"; echo "Content-Type: text/plain"; echo ""; echo "Это тело письма."; echo ""; echo "--boundary"; echo "Content-Type: application/zip; name=\"файл.zip\""; echo "Content-Disposition: attachment; filename=\"файл.zip\""; echo ""; uuencode файл.zip файл.zip; echo "--boundary--") | sendmail -t
Использование mailx
mailx
также является удобным инструментом для отправки писем.
-
Отправка письма с
mailx
:
Убедитесь, чтоmailx
установлен. Если нет, установите его с помощью:sudo apt-get install bsd-mailx
-
Отправка письма с телом и вложением:
Пример использованияmailx
для отправки письма:echo "Это тело письма." | mailx -s "Тема вашего письма" -a файл_вложения.zip -r "TechSupport <youremail@example.com>" recipient@example.com
Заключение
В зависимости от ваших предпочтений и требований к конфигурации почтового клиента, вы можете выбрать один из вышеупомянутых инструментов для отправки электронной почты из Linux. Убедитесь, что необходимые настройки и зависимости установлены, чтобы email-рассылка происходила без ошибок.
Если возникли сложности с настройкой, возможно, стоит ознакомиться с документацией используемого инструмента или обратиться к сообществу за поддержкой.