使用sendmail强制内容类型

时间:2013-08-14 13:53:55

标签: bash gmail sendmail content-type

使用sendmail发送邮件时遇到了一些问题:每封邮件都是Content-Type: multipart/alternative发送的,但我想知道只在Content-Type: text/plain发送邮件。原因是因为GMAIL Web界面尊重RFC,我的消息显示的是最新的Content-type,但由于我的消息不是HTML,显示效果很差。

我的bash脚本如下:

#!/bin/bash

SENDMAIL_BIN='/usr/sbin/sendmail'
FROM_MAIL_ADDRESS='noreply@plop.com'
FROM_MAIL_DISLAY='Test format mail'
RECIPIENT_ADDRESSES='me@plop.com'

MAIL_CMD="$SENDMAIL_BIN -f $FROM_MAIL_ADDRESS -F \"$FROM_MAIL_DISLAY\" $RECIPIENT_ADDRESSES"
(echo "Subject: Test format";echo -e "MIME-Version: 1.0\nContent-Type: text/plain;\n\n" && cat output.txt) | eval $MAIL_CMD

但是我的脚本似乎没有重写Content-Type,而且它仍然是Content-type: multipart/alternative(根据我的邮件的显示原始)。

NOTA

  • 我的output.txt没有什么特别的东西(只有来自我的应用程序的日志行)。
  • 我尝试了一个gruik hack:放<pre></pre>,但&lt;pre&gt;部分邮件来源中Content-Type: text/html的显示仍然很糟糕。

如果您有任何线索,或者您知道如何使用sendmail更改Content-Type的顺序,请告诉我。

提前致谢

2 个答案:

答案 0 :(得分:2)

我有非解决方案,而不是强迫我的邮件在text/plain,我会在text/html发送邮件,但我会添加{{1}标签打开和关闭我的输出文件...因为它现在位于<pre>text/html标记不会显示为<pre>

这不是我除外但是有效。所以我以前的脚本就变成了:

&lt;pre&gt;

答案 1 :(得分:1)

尝试删除内容类型上的额外分号:

echo -e "MIME-Version: 1.0\nContent-Type: text/plain\n\n"

使用数组比使用eval解析字符串更好:

#!/bin/bash

SENDMAIL_BIN='/usr/sbin/sendmail'
FROM_MAIL_ADDRESS='noreply@plop.com'
FROM_MAIL_DISLAY='Test format mail'
RECIPIENT_ADDRESSES='me@plop.com'

MAIL_CMD=("$SENDMAIL_BIN" -f "$FROM_MAIL_ADDRESS" -F "$FROM_MAIL_DISLAY" "$RECIPIENT_ADDRESSES")
(echo "Subject: Test format";echo -e "MIME-Version: 1.0\nContent-Type: text/plain\n\n" && cat output.txt) | "${MAIL_CMD[@]}"