12

我正在编写一个shell script使用 Linux 发送电子邮件Mailx的电子邮件,电子邮件必须包含文件附件消息正文

目前正在发送带有附件的电子邮件:

output.txt | mail -s "Daily Monitoring" james@dell.com

我想添加一个消息正文。我该怎么办?

Linux 邮件:

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

6 回答 6

26

通常的方法是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
于 2011-11-29T17:34:56.180 回答
4

最好的方法是使用 mpack!

mpack -s "主题" -d "./body.txt" "././image.png" 邮件地址

mpack - 主题 - 正文 - 附件 - 邮件地址

于 2015-03-05T11:28:17.067 回答
1

Johnsyweb 的回答对我不起作用,但对 Mutt 对我有用:

echo "Message body" | mutt -s "Message subject" -a myfile.txt recipient@domain.com
于 2015-02-06T20:32:03.427 回答
1

试试这个它对我有用:

(echo "Hello XYX" ; uuencode /export/home/TOTAL_SI_COUNT_10042016.csv TOTAL_SI_COUNT_10042016.csv ) | mailx -s 'Script test' abc@xde.com
于 2016-10-05T09:14:34.767 回答
1

在 RHEL Linux 上,我无法在电子邮件正文而不是附件中获取我的消息。使用 od -cx,我发现我的电子邮件正文包含几个 /r。我使用 perl 脚本去除 /r,消息被正确插入到电子邮件正文中。

mailx -s "subject text" me@yahoo.com < 'body.txt'

文本文件body.txt 包含字符\r,所以我使用perl 去除\r。

cat body.txt | perl success.pl > body2.txt
mailx -s "subject text" me@yahoo.com < 'body2.txt'

这是成功.pl

    while (<STDIN>) {
        my $currLine = $_;
        s?\r??g;
        print
    }
;
于 2017-01-20T15:35:40.543 回答
0

你可以试试这个:

(cat ./body.txt)|mailx -s "subject text" -a "attchement file" receiver@domain.com
于 2016-05-18T00:30:26.533 回答