Come posso inviare un allegato tramite e-mail dalla riga di comando


26

È possibile inviare per e-mail gli allegati dalla riga di comando?

Se possibile, vorrei qualcosa di semplice come:

mail -a myfile.txt -t me@example.com -s "Here's my file"

1
L'agente utente di posta elettronica predefinito della riga di comando di Ubuntu mail(aka mailx) è MIME ignorante, pertanto non è in grado di gestire gli allegati in un modo diverso dal 1980. Questa è una buona domanda, sto cercando il canonico MUA canonico; e c'è dell'altro.
msw,

Risposte:


18

Di tutti gli agenti utente di posta nel repository Ubuntu, sembra che mutt sia il MUA della riga di comando che è benedetto con il supporto a lungo termine.

Secondo il manuale , puoi fare qualcosa esattamente come:

mutt -a myfile.txt -s "Here's my file" -- me@example.com

tranne che non andrà da nessuna parte poiché uno ha anche bisogno di un agente di trasferimento di posta. I più popolari sono:

  • il venerabile sendmail
  • postfix
  • exim4
  • qmail
  • nullmailer

e gli unici che Canonical sembra supportare sono postfix (grazie per la correzione Steve) ed exim4 .

Si potrebbe anche dire che xdg-email è anche un MUA Ubuntu appropriato, ma è un front-end bare-bones che esegue solo il tuo MUA preferito per tuo conto.

Se desideri consigli su quale MTA potrebbe essere adatto al tuo utilizzo, forse apri un'altra domanda qui.


Ottima domanda, grazie. Mi hai chiesto di far funzionare la posta sulla mia scatola. Ho usato nullmailer MTA per inoltrare ciecamente al mio ISP e il muttcomando di esempio ha funzionato come pubblicizzato. Per inciso, nullmailer ha un front-end di sendmail falso in modo che la maggior parte dei programmi che prevedono di parlare con sendmail vengano trasferiti su un vero MTA con nessuno sforzo da parte mia.
msw,

msw, non sono del tutto sicuro del motivo per cui stai affermando che exim4 è l'unico supporto canonico, postfix è anche principale ed è ciò che è abilitato se selezioni la selezione dell'attività Mail Server dall'installazione ubuntu-server. Credo che exim4 sia l'MTA predefinito di Debian e, in passato, le preferenze di impacchettamento avrebbero potuto averlo inserito per impostazione predefinita, ma per un po 'di tempo Postfix è sicuramente l'MTA preferito in Ubuntu.
Steve Beattie,

Oh, e nota anche che se sei andato con bsd mail / mailx come tuo MUA (non consapevole del mimo), avresti comunque bisogno di un MTA di qualche tipo per inviare effettivamente la posta. Ma mutt è meglio per te comunque. :-)
Steve Beattie,

11

Ho avuto anche problemi con l'invio di file allegati. Quando ho inviato un'e-mail senza allegato, ha avuto successo ma non con allegato. Questo problema è stato esistente con sendemail, mutt, mail, mailx, uuencodecomandi.

Fortunatamente, è stato risolto in modo strano. Uso Gmail per l'invio di e-mail. Puoi configurare il tuo gmail per l'invio di e-mail tramite comandi nel terminale come dichiarato su http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .

Puoi inviare un'e-mail di testo utilizzando:

mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt 

ma non puoi inviare lo stesso file dell'allegato come di seguito:

mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt

o:

mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

Infine, ho capito che solo questo formato poteva inviare un allegato:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

Stranamente, la differenza è l'esistenza del comando "echo".

Aggiornamento: 201808

Sembra che l' -aopzione sia stata cambiata con Maiuscole -A per l'allegato ora. L' -asembra essere per cambiare intestazione secondo doc


Eccellente! Grazie. Stavo cercando di inviare il mio .zshrcfile a qualcuno e anche se uso mailmolto per inviare messaggi rapidi, il tentativo di inviare un allegato non funzionava. Avevo solo bisogno di confermare che era possibile rendersi conto che l' ordine degli argomenti è molto importante. Questo ha funzionato per me: mail -s "zshrc" -a ~/.zshrc username@example.com... ovviamente dovevo ancora digitare il corpo del messaggio e premere ctrl+dsull'ultima riga vuota.
Karl Wilbur,

L'utilizzo mail username@example.com -a ~/.zshrcha "funzionato" in quanto ha inviato il messaggio ma non ha inviato il file. Se avessi provato mail username@example.com -a ~/.zshrc -s 'zshrc', sarebbe stato ovvio che i parametri dopo l'indirizzo del destinatario venivano ignorati.
Karl Wilbur,

@Masoud lnk è rotto ... volevo aggiornarlo, ma sai meglio quale documentazione hai fornito, quindi te lo lascio fare
Philippe Gachoud

6

Ho scoperto che il comando e i parametri sono stati modificati di recente.

Se vuoi inviare i tuoi allegati con questo comando:

mail -s "your subject" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt

L'opzione attachmentdovrebbe essere -Aqual è CAPITALE A.


3

È possibile che si desideri inviare un file dalla shell , ma altrimenti utilizzare Thunderbird .

In questo caso, provare thunderbird -remote ...è utile - supponendo che thunderbird sia di solito in esecuzione:

Il comando apre una finestra di composizione posta elettronica di un'istanza thunderbird in esecuzione.
L'indirizzo "Da" è il tuo indirizzo predefinito configurato in thunderbird.
Inoltre, vengono utilizzate le impostazioni dell'account esistenti , non è necessaria alcuna configurazione separata.

Per una mail indirizzata a you@example.com, con oggetto "S", corpo "B" e un allegato /some/absolute/file.txt, il comando è

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"

Ci sono due problemi:

Il file allegato deve essere fornito da un percorso assoluto , che in pratica è noioso. Che può essere gestito usando readlink -fper risolvere i percorsi relativi:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"

Inoltre, il comando è troppo lungo. Utilizzare uno script di shell o una funzione di shell, con quattro argomenti:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

Con questa funzione, il comando diventa leggibile:

thunderbird-compose 'Some Subject' test@example.com 'Body of message' file1

aprirà una finestra "Scrivi" di thunderbird con l'allegato e Da, A, Oggetto e corpo del testo compilati. Può essere modificato prima di inviarlo.


2

heirloom-mailxIl pacchetto in debian fornisce il mailxcomando per inviare facilmente gli allegati mime. seguenti lavori per me;

 mailx -a attachment.zip -s subject rctp@domain.to

1
Questo era il pezzo mancante di cui avevo bisogno; l' maile mailxincluso con RH-alike ha -aper i file allegati, ma quello incluso in Debian-alike non lo fa.
DopeGhoti,

0

Vorrei aggiungere un'altra risposta che viene utilizzata per aggiungere il testo del corpo insieme all'allegato. Saluti!!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
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.