2011-11-29 44 views
9

Tôi viết một shell script để gửi một email sử dụng Linux Mailx, email phải chứa một tập tin đính kèm tập tin và một cơ thể nhắn.gửi nội dung thư đơn giản + tập tin đính kèm tập tin sử dụng Linux mailx

Hiện nay gửi một email với một tập tin đính kèm:

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

Tôi muốn thêm một nội dung thư. Tôi nên như thế nào?

Linux mailx:

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

này nên có tất cả câu trả lời cho câu hỏi của bạn: http://stackoverflow.com/questions/17359/how-do-i-send-a- tệp-as-an-email-tệp đính kèm-sử dụng-linux-command-line/14213935 # 14213935 –

Trả lời

20

Cách thông thường là sử dụng uuencode cho file đính kèm và echo cho cơ thể:

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

Đối với Solaris và AIX, bạn có thể cần phải hãy đặt câu hỏi echo trước tiên:

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

câu trả lời Johnsyweb đã không làm việc cho tôi, nhưng nó làm việc cho tôi với Mutt:

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

Cách tốt nhất là sử dụng MPack!

MPack -s "Subject" -d "./body.txt" "././image.png" mailadress

MPack - Đối tượng - thân - tập tin đính kèm - mailadress

0

Bạn có thể thử này :

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

Hãy thử điều này nó làm việc cho tôi:

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

On RHEL Linux, tôi gặp rắc rối khi thông điệp của tôi trong nội dung của email thay vì dưới dạng tệp đính kèm. Sử dụng od -cx, tôi thấy rằng phần thân email của tôi chứa một số/r. Tôi đã sử dụng một tập lệnh perl để tách/r và thông điệp được chèn chính xác vào phần thân của email.

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

Tệp văn bản body.txt chứa char \ r, vì vậy tôi đã sử dụng perl để xóa \ r.

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

Đây là success.pl

while (<STDIN>) { 
     my $currLine = $_; 
     s?\r??g; 
     print 
    } 
; 
Các vấn đề liên quan