2011-11-29 3 views
9

Sto scrivendo un shell script per inviare una e-mail Linux Mailx, l'e-mail deve contenere un allegato di file e un corpo messaggio.Invio semplice corpo del messaggio + file allegati che utilizzano Linux Mailx

Attualmente l'invio di una e-mail con un allegato:

output.txt | mail -s "Daily Monitoring" [email protected] 

desidero aggiungere un corpo del messaggio. Come dovrei?

Linux Mailx:

mail [-eIinv] [-a header] [-b addr] [-c addr] [-s subj] to-addr 
+1

Questo dovrebbe avere tutte le risposte alle tue domande: http://stackoverflow.com/questions/17359/how-do-i-send-a- file-come-un-email-attacco-con-linux-command-line/14213935 # 14213935 –

risposta

20

Il solito modo è quello di utilizzare uuencode per gli allegati e echo per il corpo:

(uuencode output.txt output.txt; echo "Body of text") | mailx -s 'Subject' [email protected] 

Per Solaris e AIX, potrebbe essere necessario metti prima la dichiarazione :

(echo "Body of text"; uuencode output.txt output.txt) | mailx -s 'Subject' [email protected] 
0

risposta di Johnsyweb non ha funzionato per me, ma funziona per me con Mutt:

echo "Message body" | mutt -s "Message subject" -a myfile.txt [email protected] 
2

Il modo migliore è quello di utilizzare mPack!

mpack -s "Oggetto" -d "./body.txt" "././image.png" mail al Suo indirizzo

mpack - soggetto - corpo - attacco - mail al Suo indirizzo

0

Si può provare questo :

(cat ./body.txt)|mailx -s "subject text" -a "attchement file" [email protected] 
1

Prova questo funziona per me:

(echo "Hello XYX" ; uuencode /export/home/TOTAL_SI_COUNT_10042016.csv TOTAL_SI_COUNT_10042016.csv) | mailx -s 'Script test' [email protected] 
0

su RHEL Linux, ho avuto problemi a trovare il mio messaggio nella corpo dell'e-mail anziché come allegato. Usando od-cx, ho trovato che il corpo della mia email conteneva diversi/r. Ho usato uno script perl per rimuovere il/r e il messaggio è stato inserito correttamente nel corpo del messaggio.

mailx -s "subject text" [email protected] < 'body.txt' 

Il file di testo body.txt conteneva il char \ r, così ho usato perl a nudo \ r.

cat body.txt | perl success.pl > body2.txt 
mailx -s "subject text" [email protected] < 'body2.txt' 

Questo è success.pl

while (<STDIN>) { 
     my $currLine = $_; 
     s?\r??g; 
     print 
    } 
; 
Problemi correlati