0

下面的命令将发送一封带有主题和正文的电子邮件,但没有附件。如果我删除< /usr/tmp/BODY_OF_EMAIL,我会收到带有主题和附件的电子邮件,但没有正文。

cat /usr/tmp/ATTACHMENT.xls | uuencode ATTACHMENT.xls | mailx -s "Subject of email!" emailaddress@company.com < /usr/tmp/BODY_OF_EMAIL

/usr/tmp/BODY_OF_EMAIL 包含文本“电子邮件正文”。

4

2 回答 2

1

使用mailx

(cat /usr/tmp/BODY_OF_EMAIL;
 echo; 
 uuencode ATTACHMENT.xls < /usr/tmp/ATTACHMENT.xls ) | 
 mailx -s "Subject of email!" emailaddress@company.com

使用nail

nail -s "Subject of email!" -a /usr/tmp/ATTACHMENT.xls emailaddress@company.com < /usr/tmp/BODY_OF_EMAIL

nail邮件程序有时安装为mail,但它理解 MIME,用于真正的附件。

于 2018-09-13T17:17:35.257 回答
0

首先,不需要使用catto feed uuencode,它可以非常愉快地从文件中读取:

uuencode /usr/tmp/ATTACHMENT.xls ATTACHMENT.xls | ...

您遇到的主要问题是这部分:

... | mailx < body_text_file

只有一个标准输入流,所以当你给shell这样矛盾的指令时,它必须选择哪个重定向生效(实际发生的是stdin最初设置为来自进程管道,然后在<读取时,已断开连接并由文件流替换)。

您可能想要做的是cat将正文文本与 uuencoded 文件连接起来,如下所示:

... | cat body_text_file - | mailx

(我假设正文是介绍,所以首先 -cat如果我错了,请交换论点)。

您的完整命令将是

uuencode /usr/tmp/ATTACHMENT.xls ATTACHMENT.xls \
  | cat /usr/tmp/BODY_OF_EMAIL - \
  | mailx -s "Subject of email!" emailaddress@example.com
于 2018-09-13T17:20:24.853 回答