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

时间:2015-01-20 14:41:55

标签: email unix

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

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

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

它曾用于在邮件正文中发送文件内容,但现在它作为附件发送,我不想要。

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

无论如何,无论在什么情况下,如何防止Unix将消息内容作为附件发送?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

一旦找到非标准字符,就会在邮件中添加以下标题:

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

并且邮件的文本实际上是64位编码的。这不是一个真正的附件,但许多邮件读者将这些邮件视为一个带有未命名附件的空体。

如果您的LANG环境变量声明了一个可以使用非7位字符(éèûôüö...)的语言环境,那么邮件似乎足够聪明,可以声明扩展字符集(针对fr语言环境的ISO-8859-1)并引用 - 可打印的编码。因此,即使在消息中使用(至少是西欧)非7位ASCII字符,如果没有控制字符,则应该正常发送邮件。

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

(参考:answer of mine到另一篇文章,但那篇文章涉及java)