我正在撰写shell script
以使用Linux Mailx
发送电子邮件,该电子邮件必须包含文件附件和邮件正文。
目前正在发送包含附件的电子邮件:
output.txt | mail -s "Daily Monitoring" james@dell.com
我希望添加一个邮件正文。我该怎么办?
Linux Mailx:
mail [-eIinv] [-a header] [-b addr] [-c addr] [-s subj] to-addr
答案 0 :(得分:24)
通常的方法是使用uuencode
作为附件,echo
作为正文:
(uuencode output.txt output.txt; echo "Body of text") | mailx -s 'Subject' user@domain.com
对于Solaris和AIX,您可能需要先放置echo
语句:
(echo "Body of text"; uuencode output.txt output.txt) | mailx -s 'Subject' user@domain.com
答案 1 :(得分:3)
最好的方法是使用mpack!
mpack -s"主题" -d" ./ body.txt" " ././ image.png"有电子邮件地址
mpack - subject - body - attachment - mailadress
答案 2 :(得分:1)
试试这个对我有用:
(echo "Hello XYX" ; uuencode /export/home/TOTAL_SI_COUNT_10042016.csv TOTAL_SI_COUNT_10042016.csv ) | mailx -s 'Script test' abc@xde.com
答案 3 :(得分:0)
Johnsyweb的答案对我没有用,但是对我来说,它适用于Mutt:
echo "Message body" | mutt -s "Message subject" -a myfile.txt recipient@domain.com
答案 4 :(得分:0)
你可以试试这个:
(cat ./body.txt)|mailx -s "subject text" -a "attchement file" receiver@domain.com
答案 5 :(得分:0)
在RHEL Linux上,我无法在电子邮件正文中收到我的邮件,而不是作为附件。使用od -cx,我发现我的电子邮件正文包含几个/ r。我使用perl脚本去除/ r,并且消息已正确插入到电子邮件正文中。
mailx -s "subject text" me@yahoo.com < 'body.txt'
文本文件body.txt包含char \ r \ n,所以我使用perl来剥离\ r。
cat body.txt | perl success.pl > body2.txt
mailx -s "subject text" me@yahoo.com < 'body2.txt'
这是success.pl
while (<STDIN>) {
my $currLine = $_;
s?\r??g;
print
}
;