Jak wysłać pocztę z wiersza poleceń?

215

Jak wysłać pocztę z wiersza poleceń?

Olivier Lalonde
źródło
1
ubuntuforums.org/showthread.php?t=780509 może ci pomóc.
Użytkownik
1
Możesz także użyć sosny.
Kaveh
1
Możesz także zainstalować msmtp i postępować zgodnie z instrukcjami opisanymi w ArchWiki
Thiago Perrotta
2
Szkoda, że ​​odpowiedzi na to pytanie są tak nieaktualne. To ważne pytanie, które mogłoby przydać się w dobrym tutorialu
6005

Odpowiedzi:

36

Spróbuj zainstalować klienta poczty e-mail Mutt . Inną opcją jest używanie emacsa z gnus . Dostępne są również inne opcje ... IMHO, powinieneś użyć więcej szczegółów w swoich pytaniach lub kilku różnych odpowiedzi na swoje pytanie, które otrzymasz :-)

crncosta
źródło
2
Zaakceptował ten, ponieważ nie wymaga żadnej konfiguracji i jest dość przyjazny dla użytkownika.
Olivier Lalonde
21
czekać. mutt - przyjazny dla użytkownika? najbardziej szalony jednoliniowy, jaki dziś czytałem :)
Stann
155
  1. Zainstaluj ssmtp Zainstaluj ssmtp :

    sudo apt-get install ssmtp
    
  2. Edytuj plik konfiguracyjny ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Dołącz następujący tekst:

    [email protected]
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Uruchom ssmtp i podaj adres e-mail odbiorcy:

    ssmtp [email protected]
    
  5. Podaj szczegóły wiadomości w następujący sposób:

    To: [email protected]
    From: [email protected]
    Subject: Sent from a terminal!
    
    Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
    (Notice the blank space between the subject and the body.)
    
  6. Naciśnij Ctrl+, Daby wysłać.


Możesz również umieścić tekst w pliku i wysłać go w następujący sposób:

ssmtp [email protected] < filename.txt
Sid
źródło
29
To dziwne, że moje hasło e-mail jest ujawnione w jakimś pliku na komputerze. Czy to jest bezpieczne?
oadams,
2
@oadams niezbyt bezpieczne. Użyj weryfikacji dwuetapowej, aby zmniejszyć ryzyko, lub skorzystaj z bramki pocztowej, która nie wymaga hasła, takiego jak dostawca usług internetowych.
itsadok
5
Nie instaluj ssmtp na serwerze z zainstalowanym postfiksem. Postfiks zostanie usunięty. Zamiast tego po prostu użyj sendmail [email protected] <file.txt, który będzie działał z Postfiksem lub ssmtp.
Alistair Buxton,
2
Kolejną dziwną rzeczą, którą chciałem się tutaj podzielić, jest to, że nie działało to dla mnie, gdy miałem długie / złożone hasło, ale działało, gdy zmieniłem je na proste hasło, dziwne, ale prawdziwe. To samo usłyszałem od kogoś innego, ale wypróbowałem to po wielu nieudanych próbach wysłania poczty i jak tylko uprościłem hasło, ku mojemu zaskoczeniu, po prostu zadziałało;)
Rajat Gupta
Jeśli Gmail nie zezwala na dostęp do serwera, zaloguj się do Gmaila na serwerze za pomocą przeglądarki wiersza polecenia. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee
87

Przez większość czasu nie trzeba konfigurować serwera SMTP, którego można po prostu użyć mailz wiersza poleceń (jeśli jeszcze go nie ma, zainstaluj za pomocą sudo apt-get install mailutils). (Lub jeśli jesteś na serwerze, na którym skonfigurowano sendmail itp.)

marco@dagobah:~$ mail -v [email protected]
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Kończymy wiadomości pojedynczo .. Wtedy mailpojawi się monit o Cc:podanie informacji (lub pozostaw puste), a mailnastępnie wydrukuje dodatkowe informacje o tym, co próbuje zrobić, a także szczegółowo przetworzy łączenie, przesyłanie i odbieranie danych z serwera pocztowego.

Marco Ceppi
źródło
28
Dodałbym odpowiedź, aby dodać „sudo apt-get install mailutils”, ponieważ nie ma go w czystej instalacji Ubuntu 10.04. Ponadto zakończenie wiadomości za pomocą. na jednej linii nie działało. Zamiast tego musiałem „Ctrl-D”. Wreszcie wiadomość nie została przesłana!
Olivier Lalonde
7
@OlivierLalonde sudo apt-get install mailutilszainstaluje serwer SMTP postfix, który może być nieco przeważony dla niektórych osób.
vaab
5
mailutils zainstaluje również mysql!
chmike
17
-v opcja nie w mojej instalacji poczty 2.99.98, musiałem także użyć Ctrl + D do zakończenia
markmnl
2
Zaktualizuj to pytanie, jest nieaktualne.
Blauhirn
47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

stosowanie:

sendemail -f [email protected] -t [email protected] -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu [email protected] -xp gmailpassword 

Jeśli nie chcesz podawać hasła w wierszu poleceń (zazwyczaj nie jest to dobra rzecz), możesz pominąć ten parametr, a sendemail poprosi o hasło ... i wyświetli je na ekranie, ale przynajmniej nie będzie go w historii wiersza poleceń.

strumień
źródło
Wysyłanie wiadomości e-mail z konta Gmail jest sendmailbardzo wygodne. Dziękuję Ci.
Mark Tomlin
Znajdź łatkę tutaj, aby nie powtarzać hasła.
Arun
Musiałem podać port -s smtp.gmail.com:587.
Joe Mornin
5
dodaj spację przed wierszem poleceń, aby nie zapisywać go w historii wiersza poleceń
guhur
inny sposób, aby nie wyświetlać go na ekranie bash: zapisz hasło do pliku, a następnie z pliku do zmiennej środowiskowej, np .: pass=$(cat my_password); sendemail... -xp $name ...i oczywiście, jeśli wywołujesz go programowo, możesz zrobić coś podobnego, np .: ruby, system("sendemail ... -xp #{File.read 'my_password'}...")również może się nie powieść za pierwszym razem powinieneś otrzymać wiadomość e-mail z tym kontem, sugerującą „włączenie mniej bezpiecznych aplikacji”, a wtedy może to działać.
rogerdpack,
23

mpack to doskonały wiersz poleceń do wysyłania załączników.

apt-get install mpack

stosowanie:

mpack -s "file you wanted" ./data.pdf [email protected]
BozoJoe
źródło
20

Potrzebujesz MTA, aby wysłać pocztę. W tym celu użyj postfiksa:

sudo apt-get install postfix

Aby wysłać e-mail:

echo "test message" | mailx -s 'test subject' [email protected]

WSPARCIE

One Zero
źródło
Musisz także zainstalować mailutils dla mailx, prawda?
Nick
4
Chciałbym, żeby to było naprawdę takie proste, ale jeśli nie jesteś kimś wyjątkowym, to nie zadziała. 99,9999% dostawców usług internetowych zignoruje pocztę z prywatnych serwerów Postfiksa, ponieważ 9,99999 razy na 10 to spamerzy.
Cerin,
to nie zadziałało, poprosiłem o instalację, mailutilskiedy wszedłem do terminalu
Mostafiz Rahman
Śmiało i zainstaluj mailutils. Nie potrzebujesz Postfix IIRC.
uav
@Cerin ma rację. Potrzebowałem jednak bardzo prostej funkcji mailingowej do zadania crona. Aby obejść ten problem, jeśli otrzymujesz za pośrednictwem konta Gmail, możesz ustawić filtr wiadomości e-mail (za pomocą słów kluczowych lub adresu z), a Gmail zezwoli na jej wysłanie.
Carrie Kendall,
15

Zainstaluj pakiet, sendmaila następnie wpisz

sendmail -t receiver@example 

następnie wpisz swój e-mail, a następnie naciśnij Ctrl + D

MhdSyrwan
źródło
10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

lub

cat "afile" | mail -s "subject" someone@dest_email.com
użytkownik142345
źródło
po prostu dodaj do łatwego testowania: echo „Witaj świecie!” | mail -s „Hello” [email protected]
Bohne
2
Jeśli ktoś nie ma komendy mail, po prostu uruchom: sudo apt-get install mailutilsw Ubuntu / Debian lub yum install mailxw CentOS / Redhat
Giovanni Benussi
9

Możesz wysłać wiadomość e-mail z wiersza poleceń za pomocą TelNet lub NetCat .

Wszystko jest wyjaśnione tutaj .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404
hanoo
źródło
2
Używanie tej metody jest trochę trudne;)
iX3
1
@ iX3 po prostu użyj swaksi nie masz nic przeciwko SSL / TLS ;-)
Germar
Lubopenssl s_client -starttls smtp ...
Raman
7

Jeśli próbujesz wysłać wiadomość e-mail z systemu, który nie uruchamia własnego serwera poczty e-mail (tj. Systemu stacjonarnego), musisz zainstalować coś takiego jak nullmailer lub esmtp , które przekierowują twoją pocztę lokalną na „prawdziwą” pocztę serwer.

Jako narzędzia wiersza poleceń możesz zainstalować mail lub mailx (pakiety mailutils, heirloom-mailx lub bsd-mailx). Jeśli potrzebujesz załączników, wypróbuj biabam.

ddeimeke
źródło
1
Lubię bsd-mailx dla polecenia -E i cronjobs
meffect
6

Nigdy tego nie próbowałem, ale istnieje mailpolecenie, które może wysyłać pocztę. Zobacz pocztę elektroniczną .

Aby przetestować lokalny adres e-mail:

echo message | mail username@localhost
dv3500ea
źródło
6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail [email protected]

gdzie filenamejest to samo: oznacza plik wejściowy i plik zdalny.

nisse
źródło
sudo apt-get install sharutilszauuencode
Janus Troelsen
1
mailutils instaluje mysql! oO
chmike
3

Możesz spróbować:

mail [email protected] -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF

Działa z GNU Mailutils , sprawdź stronę internetową, aby uzyskać więcej informacji.

Sharad
źródło
2

Uruchom :

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf

Należy tam dodać:

# The user that gets all the mails (UID < 1000, usually the admin)
[email protected]

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes

Uruchom :

sudo -H gedit /etc/ssmtp/revaliases

Wpisz tam:

root:[email protected]:smtp.gmail.com:587

Włącz „mniej bezpieczne aplikacje” w Gmailu:
https://support.google.com/accounts/answer/6010255?hl=pl

Sprawdź to, uruchamiając następujące polecenia na terminalu:

echo "Body of mail is abc" | mail -s "Subject is xyz" "[email protected]"`
Aquarius_Girl
źródło
1

Oprócz powyższego nadal pojawiał się ten błąd

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  [email protected]
[<-] 220 smtp.gmail.com ESMTP v193sm19198825qka.18 - gsmtp
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] aG94Z2VuZUBrrrFpbC5jb20=
[<-] 334 UGFzweliecmQ6
[<-] 534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp
ssmtp: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp)

ROZWIĄZANIE: zresetuj hasło Gmaila, nawet jeśli bieżące hasło jest poprawne ... ewentualnie środek bezpieczeństwa Google

Scott Stensland
źródło