Unix 邮件自动将我的邮件作为附件发送

Unix mail automatically sending my message as an attachment

我有一个看起来像这样的邮件命令:

sh ~/filter.sh ~/build/site_build.err | mail -s "Site updated." me\@site.com

bash 脚本有几个命令,主要是 grep,用于过滤 stderr。当我们的构建过程完成时,它将过滤后的内容发送给我。

以前是在邮件正文中发送文件内容,现在是作为附件发送,我不想这样。

当我再次删除它在邮件正文中发送给我的大部分文本时,我推断这与邮件大小有关 - 这是否正确?

无论如何,我怎样才能阻止 Unix 在任何情况下将邮件内容作为附件发送?

谢谢!

仍然不确定有多少事情会导致 mail 显然将输入作为附件发送。但在许多 Linux 发行版中,mailheirloom mailx 的别名。如果其中有任何不可打印的字符,已知对其输入进行编码。

一旦发现非标准字符,它就会将以下 headers 添加到邮件中:

Content-Type: application/octet-stream
Content-Transfert-Encoding: base64

并且邮件的文本实际上是 base 64 编码的。它不是真正的附件,但许多邮件阅读器将此类邮件视为带有未命名附件的空邮件 body。

如果您的 LANG 环境变量声明了一个可以使用非 7 位字符的语言环境 (éèûôüö ...) quoted-printable编码。因此,即使邮件中有(至少是西欧)非 7 位 ASCII 字符,只要没有控制字符,邮件也应该可以正常发送。

另一种方法是从 filter.sh 的输出中过滤所有不可打印的字符,最后的机会解决方案是不使用邮件而直接使用 sendmail。

(参考:一个 answer of mine 到另一个 post 但那个 java)