È 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"
È 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"
Risposte:
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:
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.
mutt
comando 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.
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
, uuencode
comandi.
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".
Sembra che l' -a
opzione sia stata cambiata con Maiuscole -A
per l'allegato ora. L' -a
sembra essere per cambiare intestazione secondo doc
.zshrc
file a qualcuno e anche se uso mail
molto 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+d
sull'ultima riga vuota.
mail username@example.com -a ~/.zshrc
ha "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.
È 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 -f
per 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.
heirloom-mailx
Il pacchetto in debian fornisce il mailx
comando per inviare facilmente gli allegati mime. seguenti lavori per me;
mailx -a attachment.zip -s subject rctp@domain.to
mail
e mailx
incluso con RH-alike ha -a
per i file allegati, ma quello incluso in Debian-alike non lo fa.
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
mail
(akamailx
) è 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.