Il modo più semplice per inviare file via e-mail tramite la riga di comando in * nix?


10

Qual è il comando più semplice - e preferibilmente più portatile - che posso usare per inviare via e-mail un singolo file come allegato a una shell * nix?

Risposte:


11

Supponendo che sia un allegato binario:

uuencode [nome file] [nome file] | mail [oggetto] [indirizzo del destinatario]

Non devi preoccuparti di UUencoding se è solo un file di testo, ad esempio:

mail [oggetto] [indirizzo destinatario] <[nome file]

La maggior parte dei * NIX hanno mail e uuencode, quindi dovrebbe funzionare praticamente ovunque.


Che ne dici se voglio il file di testo come allegato e non nel corpo del messaggio?
Yuval A

Dipende: non credo che la semplice posta GNU possa farlo, quindi dovrai usare un vero client di posta; pino, mutt o qualcosa di simile. Quali di questi sono disponibili dipende da quelli installati dai sistemi. Usando mutt, la risposta di Gavin (sotto) funzionerà bene.
RainyRat,

Il pino è buono! Posso usarlo dalla riga di comando con l'utilizzo della GUI testuale?
Yuval A

Penso che sia fattibile. Dai un'occhiata a staff.washington.edu/chappa/pine/info/outgoing.html per ulteriori informazioni.
RainyRat,

11

Usando mutt, puoi:

mutt -z -a <file> -s <subject> -- user@example.com

Oppure, se non vuoi digitare un corpo:

mutt -z -a <file> -s <subject> -- user@example.com < /dev/null


mutt non è disponibile sui miei sistemi, grazie comunque
Yuval A

Penso che scoprirai che questo sarà un gioco complicato tra ciò che è facile e ciò che è portatile. mailx è portatile, ma non necessariamente facile. Come menziona RainyRat, penso che dovrai andare con un MUA completo ed eseguirlo dalla riga di comando.
Gavin McTaggart,

2
Ho dovuto aggiungere un --prima dell'indirizzo e-mail per far funzionare questi comandi.
Autumnsault,

Sono necessari dei trattini per separare l'indirizzo e-mail dai nomi dei file "- user@example.com", @DoctorMohawk è corretto. Tentativo di aggiungerli sopra al corpo della risposta.
Jeff Clayton,

2

" sendEmail è un client e-mail SMTP a riga di comando leggero. Se hai la necessità di inviare e-mail da una riga di comando, questo programma gratuito è perfetto: semplice da usare e ricco di funzionalità. È stato progettato per essere utilizzato in script bash, file batch , Programmi Perl e siti Web, ma è abbastanza adattabile e probabilmente soddisferà le tue esigenze. SendEmail è scritto in Perl ed è unico in quanto non richiede MODULI. Ha un set intuitivo e flessibile di opzioni da riga di comando, che lo rende molto facile per imparare e usare. [Piattaforme supportate: Linux, BSD, OS X, Windows 98, Windows NT, Windows 2000 e Windows XP] "

L'ho usato prima e mi è piaciuto molto. È possibile allegare file con l'opzione -a.


+1 - Questo è stato perfetto per quello che mi serve in quanto è facile e ancora attivamente mantenuto! Se sei su un sistema Debian, puoi semplicemente aptitude install sendemail. Si noti che il comando viene installato come sendEmailcon la 'E' maiuscola.
Topher Fangio,

In realtà, il tarball contiene uno script perl e un paio di documenti. Puoi semplicemente scaricarlo, estrarlo ed eseguirlo (a condizione che il tuo sistema abbia perl). Sono contento che ti piaccia, però.
Clinton Blackmore,

1

Non posso aggiungere un commento, ma ...

  • Le risposte a questo dipenderanno molto da quali, se ve mailxne sono, sono disponibili dei tuoi derivati .
  • Sebbene il file debba essere visualizzato senza problemi dal MUA ricevente, il piping da uuencodenon produrrà tecnicamente una e-mail con un allegato. Dai un'occhiata alla fonte dell'email che ricevi per capire perché.

+1 per la verità. Non mi ero nemmeno reso conto che esistesse una versione di mailx in grado di inviare allegati (il mio certamente no). Hai anche ragione sulla codifica manuale richiesta con uuencode -> pipeline di posta.
Gavin McTaggart,

1

Se vuoi la portabilità assoluta puoi telnet nel tuo server di posta sulla porta 25 ed emettere direttamente i comandi SMTP. Non sono troppo duri e dovrebbero essere molto scriptabili.


3
Puoi anche scrivere il tuo server SMTP.
Hark,

1

Un rapido Google ha aperto questa pagina , che descrive una varietà di modi per allegare file usando una varietà di applicazioni. Un paio di quelli più diffusi -

  • uuenc8de per creare un "allegato" in linea.

  • metamail -f file-to-attach -m mime-type

  • mPack -c mime-type file-to-attach

  • cane bastardo -a file-to-attach

  • Olmo -A file-to-attach

Inoltre, ha collegamenti a un paio di script shell e uno script Perl per creare e inviare il messaggio, che probabilmente sarà più di tuo gradimento.


1
echo "Email body text" | mail -s "Subject of email" -a file.to.attach.txt my@email.com

mail: opzione illegale - a
Yuval A

1
si noti che questa è una funzione mailx, assicurarsi che sia installato un pacchetto specifico
niXar

0

Alcuni anni fa, ho scritto una shell script che ha fatto proprio questo. Si chiamava binmail.sh. Ha usato un codificatore base64 (molti codici sorgente possono essere trovati con google ) e ha creato allegati secondo RFC1521 .


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.