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 user@gmail.com [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ć.


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 user@gmail.com

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.


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 user@domain.com

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.


2
Wystarczy dodać do odpowiedzi temat i treść: echo -e "Temat: test \ n \ n Tutaj zawartość treści \ n" | sendmail
user@domain.com

13

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

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

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" username@domain.com

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



-3

Wysyłanie zwykłej poczty:

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

Ctrl+ Ddo końca


2
pyta komendę on-line.
Rohit Gupta
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.