sendmail与cat在电子邮件正文中添加额外的空格

时间:2014-04-27 18:40:01

标签: shell sendmail cat

当我尝试使用cat和sendmail读取文件并发送电子邮件时, 我收到的电子邮件在文本中的字母之间有额外的空格。

我的代码:

export MAILTO="sa@y.com"
export SUBJECT="mydomain PREPROD MONITOR AT ${DATE}"
export BODY1="/usr/local/oracle/wls1036/domains/mydomain/bin/mydomainmonitor/mydomainmonitor.log"

(
  echo "To: $MAILTO"
  echo "Subject: $SUBJECT"
  echo "MIME-Version: 1.0"
  echo "Content-Type:text/html"
  echo "Content-Disposition: inline"

  cat $BODY1

) | /usr/sbin/sendmail -i $MAILTO

请让我知道为什么添加这些额外的空格。当我查看文件时,我看不到任何空格。

2 个答案:

答案 0 :(得分:1)

如果文件有长行,Sendmail需要破解它们。

确保数据完整性的透明方法是使用简单的MIME包装器。您可能希望使用正确的MIME感知MUA来拼凑格式正确的消息,但手动执行它基本上相当于添加Content-Transfer-Encoding: quoted-printable标头,并相应地对正文进行QP编码。

MAILTO="sa@y.com"
SUBJECT="mydomain PREPROD MONITOR AT ${DATE}"
BODY1="/usr/local/oracle/wls1036/domains/mydomain/bin/mydomainmonitor/mydomainmonitor.log"

( cat <<____HEADERS
To: $MAILTO
Subject: $SUBJECT
MIME-Version: 1.0
Content-Type:text/html
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

____HEADERS

# Really quick and dirty; does not implement full QP
perl -pe 's/=/=3D/g;s/(.{72})/$1=\n/g' "$BODY1"

) | /usr/sbin/sendmail -i $MAILTO

答案 1 :(得分:0)

我使用新行char将输出到我的日志文件分成多行。 现在发送邮件正确地发送电子邮件,没有任何额外的空格。