2011-11-29 14 views
9

Estoy escribiendo un shell script para enviar un correo electrónico utilizando Linux Mailx, el correo electrónico debe contener un archivo adjunto archivo y un cuerpo de mensaje .Envío de cuerpo simple mensaje + archivo adjunto usando Linux mailx

Actualmente enviando un correo electrónico con un archivo adjunto:

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

deseo añadir un cuerpo de mensaje. ¿Como podria yo?

Linux mailx:

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

Esto debería tener todas las respuestas a sus preguntas: http://stackoverflow.com/questions/17359/how-do-i-send-a- file-as-an-email-attachment-using-linux-command-line/14213935 # 14213935 –

Respuesta

20

La forma más habitual es utilizar uuencode para los archivos adjuntos y echo para el cuerpo:

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

Para Solaris y AIX, es posible que necesite poner la declaración echo primero:

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

respuesta de Johnsyweb no funcionó para mí, pero a mí me funciona con Mutt:

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

La mejor manera es utilizar mpack!

mpack -s "Sujeto" -d "./body.txt" "././image.png" mailadress

mpack - sujeto - cuerpo - archivo adjunto - mailadress

0

Puede probar este :

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

Prueba esto funciona para mí:

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

en RHEL Linux, tuve problemas para conseguir mi mensaje en el cuerpo del correo electrónico en lugar de como un archivo adjunto. Usando od -cx, encontré que el cuerpo de mi correo electrónico contenía varios/r. Utilicé una secuencia de comandos de Perl para quitar la/r, y el mensaje se insertó correctamente en el cuerpo del correo electrónico.

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

El archivo de texto Body.txt contenía el carbón \ r, por lo que utiliza Perl para despojar \ r.

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

Esta es success.pl

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