Come inviare posta dalla riga di comando?


Risposte:


36

Prova a installare il client di posta elettronica Mutt . Un'altra opzione è usare emacs con gnus . Altre opzioni disponibili anche ... IMHO, dovresti usare più dettagli nelle tue domande, o diverse risposte diverse alla tua domanda che riceverai :-)


2
Accettato questo in quanto non richiede alcuna configurazione ed è abbastanza intuitivo.
Olivier Lalonde,

21
aspettare. mutt - facile da usare? il più folle one-liner che ho letto oggi :)
Stann

155
  1. Installa ssmtp Installa ssmtp :

    sudo apt-get install ssmtp
    
  2. Modifica il file di configurazione di ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Aggiungi il seguente testo:

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Esegui ssmtp e fornisci l'indirizzo email del destinatario:

    ssmtp recepient_name@gmail.com
    
  5. Fornire i dettagli del messaggio come segue:

    To: recipient_name@gmail.com
    From: username@gmail.com
    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. Premi Ctrl+ Dper inviare.


Puoi anche inserire il testo nel file e inviarlo come segue:

ssmtp recipient_name@gmail.com < filename.txt

29
È strano lasciare la mia password e-mail esposta in alcuni file sul computer. È sicuro?
oadams,

2
@oadams non è molto sicuro. Utilizza la verifica in due passaggi per ridurre il rischio o utilizza un gateway di posta che non richiede una password, come il tuo ISP.
Il

5
Non installare ssmtp su un server con postfix installato. Postfix verrà rimosso. Invece, usa semplicemente sendmail user@example.com <file.txt che funzionerà con postfix o ssmtp.
Alistair Buxton,

2
Un'altra cosa strana che volevo condividere qui è che non ha funzionato per me quando avevo una password lunga / complessa, ma ha funzionato quando l'ho modificata in una password semplice, strana ma vera. Ho anche sentito lo stesso da qualcun altro, ma l'ho provato dopo molti tentativi falliti di inviare posta e non appena ho semplificato la password, con mia sorpresa, ha funzionato;)
Rajat Gupta,

Se Gmail non consente l'accesso al tuo server, accedi a Gmail sul server con il browser della riga di comando. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee,

87

Il più delle volte non dovresti aver bisogno di configurare un server SMTP che puoi semplicemente usare maildalla riga di comando (se non è già presente, installa con sudo apt-get install mailutils). (O se ti trovi su un server in cui è configurato sendmail, ecc.)

marco@dagobah:~$ mail -v marco.ceppi.use@gmail.com
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Terminare i messaggi con un singolo .in linea. In quel momento mailti verrà chiesto di Cc:inserire le informazioni (o di lasciarle in bianco) e mailquindi di stampare ulteriori informazioni su ciò che sta tentando di fare, oltre a dettagliare l'elaborazione della connessione, della trasmissione e della ricezione di dati dal server di posta.


28
Aggiungerei la risposta per includere "sudo apt-get install mailutils" poiché non è presente su un'installazione Ubuntu 10.04 pulita. Inoltre, terminando il messaggio con a. su una sola riga non ha funzionato. Ho dovuto invece "Ctrl-D". Infine, il messaggio non è stato trasmesso!
Olivier Lalonde,

7
@OlivierLalonde sudo apt-get install mailutilsinstallerà un server SMTP postfixche potrebbe essere un po 'sovrappeso per alcune persone.
vaab,

5
mailutils installerà anche mysql!
chmike,

17
-v opzione non nella mia installazione di posta 2.99.98, anche per usare Ctrl + D per terminare
markmnl

2
Si prega di aggiornare questa domanda, è obsoleta.
phil294,

47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

utilizzo:

sendemail -f fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -xp gmailpassword 

Se non vuoi specificare la tua password nella riga di comando (generalmente non è una buona cosa da fare), puoi omettere quel parametro e sendemail ti chiederà la password ... e la visualizzerà sullo schermo, ma almeno non sarà nella cronologia della riga di comando.


Invio di posta da un account GMail utilizzando la sendmailcertezza molto utile. Grazie.
Mark Tomlin

Trova una patch qui per non fare eco alla password.
Arun,

Ho dovuto specificare la porta con -s smtp.gmail.com:587.
Joe Mornin,

5
aggiungi uno spazio prima di una riga di comando per non salvarlo nella cronologia della riga di comando
guhur

un altro modo per non visualizzarlo sullo schermo bash: salva la password in un file, quindi da un file a una variabile di ambiente, es: pass=$(cat my_password); sendemail... -xp $name ...e ovviamente se lo chiami a livello di codice puoi fare qualcosa di simile, es: ruby system("sendemail ... -xp #{File.read 'my_password'}...")potrebbe anche fallire il la prima volta, dovresti ricevere un'email a quell'account che ti suggerisce di "abilitare le app meno sicure", quindi può funzionare.
rogerdpack,

23

mpack è un ottimo modo da riga di comando per inviare file allegati.

apt-get install mpack

utilizzo:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn

20

È necessario un MTA per inviare la posta. Per questo, usa postfix:

sudo apt-get install postfix

Per inviare e-mail:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com

AIUTO


Devi anche installare mailutils per mailx, giusto?
Nick,

4
Vorrei che fosse davvero così semplice, ma se non sei una persona molto speciale, questo non funzionerà. Il 99,9999% degli ISP ignorerà la posta dai server Postfix privati, perché 9.99999 volte su 10 sono spammer.
Cerin,

questo non ha funzionato per me, mi ha chiesto di installarlo mailutilsquando sono entrato nel terminale
Mostafiz Rahman,

Vai avanti e installa mailutils. Non è necessario Postfix IIRC.
uav

@Cerin ha ragione. Avevo bisogno di funzionalità di mailing molto semplici per un lavoro cron. Per ovviare a questo problema, se ricevi tramite un account Gmail, puoi impostare un filtro per l'e-mail (tramite parole chiave o indirizzo mittente) e Gmail consentirà l'invio.
Carrie Kendall,

15

Installa il pacchetto sendmailquindi digita

sendmail -t receiver@example 

quindi scrivi la tua email quindi premi Ctrl + D


10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

o

cat "afile" | mail -s "subject" someone@dest_email.com

solo per aggiungere per un facile test: echo "Ciao mondo!" | mail -s "Hello" mail@example.org
Bohne,

2
Se qualcuno non ha il comando mail, esegui: sudo apt-get install mailutilsin Ubuntu / Debian o yum install mailxin CentOS / Redhat
Giovanni Benussi

9

È possibile inviare un'e-mail dalla riga di comando con TelNet o NetCat .

Tutto è spiegato qui .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
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

2
È un po 'difficile usare SSL quando si utilizza questo metodo;)
iX3

1
@ iX3 basta usare swakse stai bene anche con SSL / TLS ;-)
Germar,

Oppureopenssl s_client -starttls smtp ...
Raman,

7

Se si tenta di inviare e-mail da un sistema, che non esegue un proprio server di posta elettronica (cioè un sistema desktop), è necessario installare qualcosa come nullmailer o esmtp , che inoltra la posta locale a una "vera" posta server.

Come strumenti da riga di comando puoi installare mail o mailx (pacchetti mailutils, heirloom-mailx o bsd-mailx). Se hai bisogno di allegati, prova biabam.


1
Mi piace bsd-mailx per il comando -E e cronjobs
meffect,

6

Non l'ho mai provato ma esiste un mailcomando che può inviare posta. Vedi man mail .

Per testare la posta elettronica locale:

echo message | mail username@localhost

6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com

dove filenameè lo stesso: sta per file di input e file remoto.


sudo apt-get install sharutilsperuuencode
Janus Troelsen,

1
mailutils installa mysql! oO
chmike,

3

Puoi provare questo:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

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

EOF

Funziona con GNU Mailutils , controlla il sito Web per ulteriori informazioni.


2

Esegui :

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

È necessario aggiungere qui:

# The user that gets all the mails (UID < 1000, usually the admin)
root=yourusernameofgmail@gmail.com

# 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

Esegui :

sudo -H gedit /etc/ssmtp/revaliases

Inserisci lì:

root:yourusernameofgmail@gmail.com:smtp.gmail.com:587

Abilita "app meno sicure" su Gmail:
https://support.google.com/accounts/answer/6010255?hl=it

Provalo eseguendo quanto segue sul terminale:

echo "Body of mail is abc" | mail -s "Subject is xyz" "someusername@gmail.com"`

1

Oltre a quanto sopra, continuavo a ricevere questo errore

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  somebody@mil.gov
[<-] 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)

SOLUZIONE: reimpostare la password di Gmail anche quando la password corrente è corretta ... possibilmente precauzione di sicurezza di Google

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.