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.