надсилати пошту з терміналу 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, або поштовий індекс . Я рекомендую останнє.

Ви можете встановити його через улюблений менеджер пакунків. Тоді вам доведеться налаштувати це, і як тільки ви це зробите, ви можете надіслати електронний лист таким чином:

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

Додаткову інформацію див. У посібнику.

Що стосується налаштування постфікса, в Інтернеті є чимало статей про те, як це зробити. Якщо ви не знаходитесь на загальнодоступному сервері з зареєстрованим доменом, ви, як правило, хочете переслати електронне повідомлення на SMTP-сервер, з якого ви можете надсилати електронну пошту.

Наприклад, для gmail перейдіть до http://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/ або будь-якого іншого подібного підручника.


4
Postfix є потужним, але якщо вам потрібно надіслати лише електронну пошту, спробуйте "ssmtp". Цей пакет менший і не запускає демон, як постфікс. Він підтримує захищені протоколи та працює з gmail.
жовтня

6
"Програма" пошта "наразі не встановлена. Ви можете встановити її, ввівши: apt-get install mailutils"
Том,

більше легкої ваги: ​​пакети nullmailerплюс bsd-mailx. Достатньо для більшості робочих станцій :) А якщо nullmailerвходить sendmailінтерфейс, ви можете навіть пропустити bsd-mailxпакет і використовувати підхід Хенджі .
Іззі

@ oᴉɹǝɥɔ ssmtpзастаріло. Використовуйте msmtpзамість цього.
Метт М.


32
echo "Subject: test" | /usr/sbin/sendmail user@domain.com

Це дозволяє робити це в одному командному рядку без необхідності повторювати текстовий файл. Ця відповідь ґрунтується на відповіді @ mti2935. Тож кредит іде туди.


2
Просто для додання відповіді для теми та тіла: echo -e "Тема: тест \ n \ n Зміст тіла \ n" | sendmail user@domain.com
emvidi

13

Ви також можете використовувати sendmail:

/usr/sbin/sendmail user@domain.com < /file/to/send

Примітка: у мене Postfix + S-Nail. Це те, що працювало для мене. Спочатку я використав відповідь "Rohit Gupta" і завантажив поштові утиліти, потім зробив своє і все спрацювало.
Мухаммед Баашар

13

Для користувачів Ubuntu: Спочатку потрібно встановити поштові комунальні послуги

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закінчити


2
він запитує в команді лінії.
Рохіт Гупта
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.