Come albind un file usando il comando mail su Linux?

Sono su un server che esegue una shell Linux. Ho bisogno di spedire un semplice file a un destinatario. Come fare, usando preferibilmente solo il comando mail ?

AGGIORNAMENTO : ha una buona soluzione, usando invece mutt:

$ echo | mutt -a syslogs.tar.gz [email protected] 

Esempio usando uuencode:

 uuencode surfing.jpeg surfing.jpeg | mail [email protected] 

e articolo di riferimento:

http://www.shelldorado.com/articles/mailattachments.html

 $ echo | mutt -a syslogs.tar.gz [email protected] 

Ma usa mutt, non mail (o mailx).

mail su ogni versione del moderno Linux che ho provato può farlo. Non c’è bisogno di altri software:

 [email protected]:~$ mail -a doc.jpg [email protected] Subject: testing This is a test EOT 

ctrl + d quando hai terminato di digitare.

mailx potrebbe essere d’aiuto. Dalla pagina man mailx:

 -a file Attach the given file to the message. 

Abbastanza facile, vero?

La mia risposta ha bisogno di base64 oltre alla posta, ma alcune versioni di uuencode possono anche fare base64 con -m, oppure puoi dimenticarti del mime e usare il semplice output di uuencode …

  [email protected] [email protected] SUBJECT="Auto emailed" MIME="application/x-gzip" # Adjust this to the proper mime-type of file FILE=somefile.tar.gz ENCODING=base64 boundary="---my-unlikely-text-for-mime-boundary---$$--" (cat < 
 mailx -a /path/to/file [email protected] 

Potresti entrare in modalità intertriggers (ti verrà richiesto con “Oggetto:” e quindi una riga vuota), inserire un sobject, quindi inserire un corpo e premere Ctrl + D (EOT) per terminare.

mpack -a -s “Ehi: questo potrebbe servire come rapporto?” -m 0 -c application / x-tar-gz survey_results.tar.gz [email protected]

mpack e munpack lavorano insieme a metamail per estendere mailx e renderlo utile con le e-mail moderne ingombre di markup e allegati html.

Questi quattro pacchetti presi insieme ti permetteranno di gestire qualsiasi e-mail che potresti in un client di posta elettronica.

Usando Ubuntu 10.4, questo è come viene scritta la soluzione mutt

echo | mutt -a myfile.zip -- [email protected]

Quella che segue è una soluzione decente tra installazioni Unix / Linux, che non si basa su alcuna caratteristica di programma insolita. Questo supporta un corpo di messaggi su più righe, più allegati e tutte le altre caratteristiche tipiche di mailx .

Sfortunatamente, non si adatta a una singola linea.

 #!/bin/ksh # Get the date stamp for temporary files DT_STAMP=`date +'%C%y%m%d%H%M%S'` # Create a multi-line body echo "here you put the message body which can be split across multiple lines! woohoo! " > body-${DT_STAMP}.mail # Add several attachments uuencode File1.pdf File1.pdf > attachments-${DT_STAMP}.mail uuencode File2.pdf File2.pdf >> attachments-${DT_STAMP}.mail # Put everything together and send it off! cat body-${DT_STAMP}.mail attachments-${DT_STAMP}.mail > out-${DT_STAMP}.mail mailx -s "here you put the message subject" [email protected] < out-${DT_STAMP}.mail # Clean up temporary files rm body-${DT_STAMP}.mail rm attachments-${DT_STAMP}.mail rm out-${DT_STAMP}.mail 

Ci sono molte risposte qui usando mutt o mailx o persone che dicono che la posta non supporta “-a”

Innanzitutto, la posta di Ubuntu 14.0.4 da mailutils supporta questo:

mail -A nomefile -s “object” [email protected]

Secondo, ho scoperto che usando il comando “man mail” e cercando “attach”

Su Linux suggerirei,

# FILE_TO_BE_ATTACHED = abc.gz

 uuencode abc.gz abc.gz > abc.gz.enc # This is optional, but good to have # to prevent binary file corruption. # also it make sure to get original # file on other system, w/o worry of endianness # Sending Mail, multiple attachments, and multiple receivers. echo "Body Part of Mail" | mailx -s "Subject Line" -a attachment1 -a abc.gz.enc "[email protected] [email protected]" 

Dopo aver ricevuto l’allegato di posta elettronica, se hai usato uuencode, avresti bisogno di uudecode

 uudecode abc.gz.enc 

# Questo genererà il file come originale con il nome uguale al secondo argomento per uuencode.

Con mailx puoi fare:

 mailx -s "My Subject" -a ./mail_att.csv -S [email protected] [email protected] < ./mail_body.txt 

Questo ha funzionato benissimo sui nostri server GNU Linux, ma sfortunatamente il mio ambiente di sviluppo è Mac OsX che ha solo una vecchia versione BSD scadente di mailx. Normalmente utilizzo Coreutils per ottenere versioni migliori dei comandi unix rispetto a quelli Mac BSD, ma mailx non è in Coreutils.

Ho trovato una soluzione da notpeter in un thread non correlato ( https://serverfault.com/questions/196001/using-unix-mail-mailx-with-a-modern-mail-server-imap-instead-of-mbox-files ) che doveva scaricare il pacchetto binario OSX di mailx Heirloom da http://www.tramm.li/iWiki/HeirloomNotes.html . Ha un mailx più avanzato che può gestire la syntax del comando precedente.

(Chiedo scusa per il collegamento incrociato o l'attribuzione scarsa, sono nuovo sul sito.)

Uso mailutils e la parte confusa è che per albind un file è necessario utilizzare il parametro A maiuscola. di seguito è un esempio.

 echo 'here you put the message body' | mail -A syslogs.tar.gz [email protected] 

Se vuoi sapere se il tuo comando mail proviene da mailutils, esegui semplicemente “mail -V”.

 [email protected]:~$ mail -V mail (GNU Mailutils) 2.99.98 Copyright (C) 2010 Free Software Foundation, inc. License GPLv3+: GNU GPL version 3 or later  This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.