wyślij pocztę z terminala linux w jednej linii [zamknięte]

148

Wiem, że mailw Linuksie istnieje polecenie wysyłania e-maili za pośrednictwem wiersza poleceń. Jak jednak mogę wysłać prostego e-maila z jedną linijką z terminala?

Na przykład:

mail [email protected] [subject] [body]

Czy wiadomość e-mail została wysłana bez potwierdzenia lub monitów do użytkownika?

Powodem jest to, że chcę wysłać do siebie krótką wiadomość e-mailem, gdy w programie ma miejsce określone wydarzenie java. Chodzi o to, że użyję Runtime.getRuntime()… itp. Do wysłania mail commandz mojego javaprogramu.

W cronprzeszłości robiłem coś podobnego, ale obecna implementacja nie używa cron, więc zamiast tego muszę to wypróbować.

cHam
źródło
Użyj bulk mail CLI, wydajnego i potężnego narzędzia do wysyłania dynamicznych wiadomości e-mail na listę mailingową za pomocą jednego prostego polecenia bulkmail mail:! Wykonuj szybki, mały i bezproblemowy marketing e-mailowy dzięki temu niewielkiemu, ale potężnemu narzędziu 💌 bulkmail.now.sh
Kumar Abhirup

Odpowiedzi:

209

mail może reprezentować kilka programów w systemie Linux. To, czego chcesz za tym, to sendmail lub postfix . Polecam to drugie.

Możesz go zainstalować za pośrednictwem swojego ulubionego menedżera pakietów. Następnie musisz to skonfigurować, a kiedy już to zrobisz, możesz wysłać e-mail w ten sposób:

 echo "My message" | mail -s subject [email protected]

Więcej informacji znajdziesz w instrukcji.

Jeśli chodzi o konfigurowanie Postfixa, w Internecie jest mnóstwo artykułów o tym, jak to zrobić. Jeśli nie jesteś na serwerze publicznym z zarejestrowaną domeną, zazwyczaj chcesz przekazać wiadomość e-mail na serwer SMTP, z którego możesz wysyłać wiadomości e-mail.

Na przykład w przypadku Gmaila postępuj zgodnie z http://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/ lub innym podobnym samouczkiem.

PSkocik
źródło
4
Postfix jest potężny, ale jeśli potrzebujesz tylko wysłać e-mail, spróbuj „ssmtp”. Ten pakiet jest mniejszy i nie uruchamia demona takiego jak postfix. Obsługuje bezpieczne protokoły i współpracuje z Gmailem.
2015
6
„Program 'mail' nie jest obecnie zainstalowany. Możesz go zainstalować, wpisując: apt-get install mailutils”
Tom
lżejszy: pakiety nullmailerplus bsd-mailx. Wystarczające dla większości stacji roboczych :) A ponieważ nullmailerzawiera sendmailinterfejs, możesz nawet pominąć bsd-mailxpakiet i użyć podejścia Hengjie .
Izzy
@ oᴉɹǝɥɔ ssmtp jest przestarzałe. Użyj msmtpzamiast tego.
Matt M.
32
echo "Subject: test" | /usr/sbin/sendmail [email protected]

Umożliwia to zrobienie tego w jednej linii poleceń bez konieczności powtarzania pliku tekstowego. Ta odpowiedź bazuje na odpowiedzi @ mti2935. Więc kredyt idzie tam.

Hengjie
źródło
2
Wystarczy dodać do odpowiedzi temat i treść: echo -e "Temat: test \ n \ n Tutaj zawartość treści \ n" | sendmail
[email protected]
13

Możesz także użyć sendmaila:

/usr/sbin/sendmail [email protected] < /file/to/send
mti2935
źródło
Uwaga: mam Postfix + S-Nail. To właśnie zadziałało dla mnie. Najpierw użyłem odpowiedzi "Rohit Gupta" i pobrałem narzędzia pocztowe, a potem zrobiłem twoją i wszystko działało.
Mohammed Baashar
13

Dla użytkowników Ubuntu: Najpierw musisz zainstalować mailutils

sudo apt-get install mailutils

Skonfiguruj serwer e-mail, jeśli korzystasz z Gmaila lub SMTP. podążaj za tym linkiem . następnie użyj tego polecenia, aby wysłać e-mail.

echo "this is a test mail" | mail -s "Subject of mail" [email protected]

Jeśli korzystasz z Gmaila i nadal otrzymujesz błąd uwierzytelniania, musisz zmienić ustawienia Gmaila:

Włącz dostęp dla mniej bezpiecznych aplikacji stąd

Rohit Gupta
źródło
-3

Wysyłanie zwykłej poczty:

$ mail -s "test message from centos" [email protected]
hello from centos linux command line

Ctrl+ Ddo końca

abhilash
źródło
2
pyta komendę on-line.
Rohit Gupta