1

使用 sendmail 发送邮件时遇到了一个小问题:每封邮件都是用 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(根据我的邮件的原件)。

注意

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

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

提前致谢

4

2 回答 2

2

我有一个非解决方案,而不是强制我的邮件进入text/plain,我会发送一封邮件,text/html但我会添加<pre>标签来打开和关闭我的输出文件......而且因为它现在在text/html,所以<pre>标签不会显示为&lt;pre&gt;

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

#!/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/html;\n" && echo '<pre>' && cat output.txt && echo '</pre>') | eval $MAIL_CMD
于 2013-08-16T09:58:57.283 回答
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[@]}"
于 2013-08-14T14:05:25.800 回答