在 Linux 中发送电子邮件时无法附加文件和包含正文
Cannot attach file and include a body while sending an email in Linux
下面的命令将发送一封包含主题和正文但没有附件的电子邮件。如果我删除 < /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 包含文本 "Email Body."
使用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,用于真正的附件。
首先,不需要使用cat
来喂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
下面的命令将发送一封包含主题和正文但没有附件的电子邮件。如果我删除 < /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 包含文本 "Email Body."
使用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,用于真正的附件。
首先,不需要使用cat
来喂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