Как отправить почту из Linux с указанием To, From, Subject и вложением файла

Вопрос или проблема

Мне нужно иметь возможность отправлять почту из 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, который предлагает возможность отправки писем с вложениями и настраиваемыми заголовками.

  1. Установка mutt:
    Если у вас еще не установлен mutt, вы можете установить его с помощью пакетного менеджера вашей системы. Например, в Debian/Ubuntu выполните следующую команду:

    sudo apt-get install mutt
  2. Настройка From-адреса в конфигурационном файле:
    Вам нужно создать или отредактировать файл конфигурации ~/.muttrc. Добавьте строку для указания адреса отправителя:

    my_hdr From: TechSupport <youremail@example.com>
  3. Отправка письма с помощью скрипта:
    Пример скрипта для отправки письма с использованием mutt:

    echo "Это тело письма." | mutt -e "my_hdr From: TechSupport <youremail@example.com>" -s "Тема вашего письма" -a файл_вложения.zip -- recipient@example.com

Использование sendmail

Инструмент sendmail позволяет отправлять письма через стандартный интерфейс отправки почты.

  1. Отправка письма с вложением:
    Пример использования 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 также является удобным инструментом для отправки писем.

  1. Отправка письма с mailx:
    Убедитесь, что mailx установлен. Если нет, установите его с помощью:

    sudo apt-get install bsd-mailx
  2. Отправка письма с телом и вложением:
    Пример использования mailx для отправки письма:

    echo "Это тело письма." | mailx -s "Тема вашего письма" -a файл_вложения.zip -r "TechSupport <youremail@example.com>" recipient@example.com

Заключение

В зависимости от ваших предпочтений и требований к конфигурации почтового клиента, вы можете выбрать один из вышеупомянутых инструментов для отправки электронной почты из Linux. Убедитесь, что необходимые настройки и зависимости установлены, чтобы email-рассылка происходила без ошибок.

Если возникли сложности с настройкой, возможно, стоит ознакомиться с документацией используемого инструмента или обратиться к сообществу за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...