отправлять почту с терминала linux в одну строку [закрыто]

148

Я знаю, что mailв Linux есть команда для отправки писем через командную строку. Как я могу отправить простое электронное письмо с одной линией из терминала, хотя?

Например:

mail user@gmail.com [subject] [body]

И письмо отправлено без какого-либо подтверждения или запроса пользователю?

Причина в том, что я хочу отправить себе короткое сообщение по электронной почте, когда в javaпрограмме происходит определенное событие . Идея в том, что я буду использовать Runtime.getRuntime()... и т. Д. Для отправки mail commandиз моей javaпрограммы.

Раньше я cronделал нечто подобное, но текущая реализация не использует cron, поэтому мне нужно попробовать это вместо этого.

Чам
источник
Используйте bulk mail CLIэффективный и мощный инструмент для отправки динамических электронных писем в список рассылки с помощью одной простой команды bulkmail mail:! С помощью этого небольшого, но мощного инструмента быстро, мини, без проблем отправляйте почтовый маркетинг 💌 bulkmail.now.sh
Kumar Abhirup

Ответы:

209

Почта может представлять собой несколько программ в системе Linux. За этим вы хотите отправить sendmail или postfix . Я рекомендую последнее.

Вы можете установить его через ваш любимый менеджер пакетов. Затем вы должны настроить его, и как только вы это сделаете, вы можете отправить электронное письмо следующим образом:

 echo "My message" | mail -s subject user@gmail.com

Смотрите руководство для получения дополнительной информации.

Что касается настройки postfix, в Интернете есть множество статей о том, как это сделать. Если вы не используете общедоступный сервер с зарегистрированным доменом, вы, как правило, хотите переслать письмо на SMTP-сервер, с которого вы можете отправлять почту.

Для gmail, например, следуйте http://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/ или любому другому подобному учебнику.

PSkocik
источник
4
Postfix - мощный инструмент, но если вам нужно только отправить письмо, попробуйте "ssmtp". Этот пакет меньше и не запускает демон, подобный postfix. Он поддерживает безопасные протоколы и работает с Gmail.
oᴉɹǝɥɔ
6
«Программа« mail »в настоящее время не установлена. Вы можете установить ее, набрав: apt-get install mailutils»
Tom
более легкий: пакеты nullmailerплюс bsd-mailx. Достаточно для большинства рабочих станций :) А поскольку nullmailerимеется sendmailинтерфейс, вы можете даже пропустить bsd-mailxпакет и использовать подход Hengjie .
Иззи
@ oᴉɹǝɥɔ ssmtpустарела. Используйте msmtpвместо этого.
Мэтт М.
36

Вы можете использовать эхо с каналом, чтобы избежать подсказок или подтверждения.

echo "This is the body" | mail -s "This is the subject" user@gmail.com
Richardson
источник
32
echo "Subject: test" | /usr/sbin/sendmail user@domain.com

Это позволяет вам делать это в одной командной строке без необходимости отображать текстовый файл. Этот ответ основан на ответе @ mti2935. Так что кредит идет туда.

Hengjie
источник
2
Просто добавьте к ответу для темы и тела: echo -e "Тема: test \ n \ n Содержимое тела здесь \ n" | sendmail user@domain.com
emvidi
13

Вы также можете использовать sendmail:

/usr/sbin/sendmail user@domain.com < /file/to/send
mti2935
источник
Примечание: у меня есть Postfix + S-Nail. Это то, что сработало для меня. Сначала я воспользовался ответом «Рохит Гупта» и скачал почтовые утилиты, затем сделал ваш и все заработало.
Мухаммед Баашар
13

Для пользователей Ubuntu: Сначала вам нужно установить mailutils

sudo apt-get install mailutils

Настройте почтовый сервер, если вы используете gmail или smtp. перейдите по этой ссылке . затем используйте эту команду для отправки электронной почты.

echo "this is a test mail" | mail -s "Subject of mail" username@domain.com

В случае, если вы используете gmail и все еще получаете ошибку аутентификации, вам нужно изменить настройку gmail:

Включите доступ для менее безопасных приложений отсюда

Рохит Гупта
источник
-3

Отправка простой почты:

$ mail -s "test message from centos" recipient@example.com
hello from centos linux command line

Ctrl+ Dзакончить

abhilash
источник
2
он спрашивает в командной строке.
Рохит Гупта