Linux邮件<file.log具有内容类型:应用/八位字节流(在Gmail中NONAME附件

2019-06-23 23:59发布

我一直在使用

 mail -s "here is a log file" "person@example.com" < log/logfile.log

其使用头才能通过:

User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

但现在的文件不再我越来越NONAME附件,因为与此:

User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

所以,如果一切都失败了,查手册man mail ...

NAME
       mailx - send and receive Internet mail

SYNOPSIS
       mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops]
              [-A account] [-S variable[=value]] to-addr . . .

这些选项都不似乎我怎么能强迫有用Content-Type: text/plain

Answer 1:

该名男子页是开始的好地方! 请继续阅读,直到你得到的MIME TYPES部分,并密切注意以下几点:

否则,或者如果文件名没有扩展名,内容类型的文本/ plain或application /八位字节流的使用,第一文本或国际文本文件,第二个为包含格式化比换行和水平等煤焦acters的任何文件制表符。

因此,如果您邮件包含“格式字符”(其通常手段控制字符)小于换行符和标签等,它会自动被归类为application/octet-stream 。 我敢打赌,如果你在数据仔细观察,你会发现一些控制字符左右浮动。

您可以解决此通过...

  • 包括日志文件作为附件(使用-a )而不是主邮件正文,并设置您的~/.mime.types文件来标识*.log文件作为text / plain的。
  • 过滤掉使用类似的控制字符tr
  • 使用另一个MUA如mutt来发送邮件。 事实上,你可以只制作一个自己的消息,并直接发送到sendmail

     ( echo To: person@example.com echo From: you@example.com echo Subject: a logfile echo cat logfile.log ) | sendmail -t 


Answer 2:

我最近得到了类似的问题,最后用一个解决方案,缩短结束:

cat -v log/logfile.log | mail -s "here is a log file" "person@example.com"

在更多的细节猫与mailx的讨论 。



Answer 3:

我遇到了一些麻烦,让我的电子邮件自动脚本来改变到Ubuntu 12.04精确运行后。 我不知道,当时的Ubuntu(或Debian的)反对传家宝 - mailx的交换BSD-mailx的,但两个“邮件” - 命令表现非常不同。 (如传家宝使用-a为附件,而它的用于BSD附加头。)在我的情况传家宝 - mailx的无法可靠确定MIME类型和不停的发送文本附件。 怪我不淘汰控制字符或什么,但我看不出有一点改变,升级之前完全没有他们的作业脚本。 所以,如果你喜欢设置MIMETYPE自己,BSD-mailx的是一个更好的解决方案。

sudo apt-get install bsd-mailx 
sudo apt-get remove heirloom-mailx

解决了这个问题对我来说。



Answer 4:

基于RedHat系统中(SL,CentOS的,Fedora的,等等),你会想安装BSD-mailx的,然后适当地设置在/ etc /方案/邮箱:

sudo yum -y install bsd-mailx
sudo alternatives --set mail /usr/bin/bsd-mailx

当然,你的风险依赖于传家宝 - mailx的行为,但不显式调用,而不是“邮件” mailx的'破的应用。

要显示有关/斌/邮件目前指向:

sudo alternatives --display mail

要检查各种安装mailx的软件包:

sudo rpm -qa *mailx


Answer 5:

在我的情况下,如果LC_ *没有定义和口音被解释为“控制字符”的剧本是从cron调用。 我只是插在我的crontab文件的开头以下行:

LC_NAME=fr_FR.UTF-8
LC_ALL=fr_FR.UTF-8


文章来源: linux mail < file.log has Content-Type: application/octet-stream (a noname attachment in Gmail)