Об этом проекте
sendsmtp — это небольшой SMTP-клиент для командной строки, реализованный на чистом Python без сторонних зависимостей. Он составляет текстовое сообщение mail в кодировке UTF-8 и передает его на SMTP-сервер, что делает его пригодным для автоматизированных уведомлений, отчетов о сборке или перенаправления вывода команд из shell в электронную почту.
Установка и требования
Пакет устанавливается с помощью pip (python3 -m pip install --user --upgrade sendsmtp) и требует Python 3.11 или новее.
Базовое использование
Команда принимает три позиционных аргумента: HOST (имя хоста или IP SMTP-сервера), FROM (используется как отправитель конверта SMTP и заголовок From) и TO (один адрес или несколько адресов, разделенных запятыми без пробелов). Типичный вызов отправляет тело сообщения с помощью -m и тему с помощью -s, сообщая об успехе, когда сервер принимает сообщение.
Источники тела сообщения
Тело сообщения может быть получено из трех источников. Опция -m/--message предоставляет его непосредственно в командной строке. Опция -i/--input считывает его из файла и имеет приоритет над --message; если путь не является существующим файлом, опция игнорируется, и тело берется из --message или stdin. Если ни одна из опций не указана, тело считывается из stdin: перенаправленный ввод считывается до EOF, а интерактивный терминал вызывает запрос, который считывает строки до тех пор, пока не будет введена строка, содержащая только EOF.
Обработка темы
--subject/-s явно задает тему. Если она опущена и тело сообщения начинается со строки Subject:, эта строка удаляется из тела и используется в качестве темы.
Безопасность соединения и порты
Клиент поддерживает три режима. Обычный SMTP по умолчанию использует порт 25. --starttls подключается в открытом тексте и обновляет соединение с помощью расширения STARTTLS, по умолчанию используя порт 587. -t/--tls использует неявный TLS с первого байта (SMTPS), по умолчанию порт 465. Два варианта TLS взаимоисключающие, а -p/--port переопределяет порт по умолчанию в любом режиме.
Аутентификация
-u/--username включает SMTP AUTH; без этого попытка AUTH не предпринимается. Если имя пользователя указано без --password, пароль запрашивается интерактивно без отображения символов. В документации отмечается, что это предпочтительнее, так как командные строки могут быть видны другим процессам и записываются в истории shell. Ошибки аутентификации прерывают выполнение, и сообщение не отправляется.
Получатели помимо TO
-c/--cc добавляет получателей копии, которые появляются в заголовке CC и получают сообщение. -b/--bcc добавляет скрытых получателей копии, которые получают сообщение, но не перечисляются ни в одном заголовке. Оба параметра принимают списки адресов, разделенные запятыми.
Диагностика
-v/--verbose выводит SMTP-диалог в stderr, сообщает о этапах подключения и аутентификации, перечисляет адреса, на которые было доставлено сообщение, и в случае сбоя показывает полный стек вызовов вместо однострочной ошибки. Без этого параметра сбои приводят к выводу однострочного сообщения об ошибке.
Заголовки сообщений и коды выхода
Создаваемые сообщения содержат заголовки From, To, Subject, CC (только с --cc) и X-Mailer: sendsmtp. Код выхода 0 означает, что сервер принял сообщение для каждого получателя, 1 указывает на ошибку или хотя бы одного отклоненного получателя, а 130 сигнализирует о прерывании с помощью Ctrl-C.
Лицензирование
Проект выпущен под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.