使用带有 postfix 2.6.6 和 centOS 6.4 的 mailx 发送 HTML

使用带有 postfix 2.6.6 和 centOS 6.4 的 mailx 发送 HTML

我正在尝试从 CentOS 服务器向用户发送 HTML 电子邮件。从长远来看,我将构建一个 COBOL 程序,该程序运行命令以向用户发送报告。

以下是一些细节。

  • CentOS 6.4
  • 月活跃用户:邮件
  • MTA:后缀 2.6.6
  • Postfix 通过交换服务器运行中继。

至于我尝试运行的命令。我今天看到最多的就是下面这个。

$ mailx -a 'Content-Type: text/html' -s "Command Line Test" [email protected] < ./bodytext.html

运行显示的命令后,我收到一条错误消息“Content-Type:text/html:没有这样的文件或目录”。我很确定在某个更新之后,他们停止允许 -a 作为内容类型指定的标志。

我还尝试将“Content-Type: text/html”添加到实际的 bodytext.html 文件中作为第一行。我有点不知道如何发送 HTML 电子邮件。我发现的一些消息来源说 mailx 和 postfix 无法正确发送 HTML 电子邮件。希望情况并非如此,但如果确实如此,我想知道您对其他 MAU 和 MTA 技术有何看法?

答案1

由于您似乎可以完全控制生成的文本文件,因此最简单且最可移植的方式就是/usr/sbin/sendmail直接参与。

/usr/sbin/sendmail -t < complete-mail.txt

这需要您自己添加所有重要的标头(FromToSubjectContent-Type)。该文件应如下所示:

From: Company <[email protected]>
To: Customer <[email protected]>
Subject: You are awesome
Content-Type: text/html

<html>…</html>

Postfix 将添加缺失但必需的标头,例如Date.

答案2

您甚至阅读过手册吗mailx,尤其是-a选项?

-a file 将给定文件附加到消息中。

吉尔斯回答,因为 CentOS 使用的是这个版本mailx

与传家宝邮箱,没有方便的方法。插入任意标头的一种可能性是设置 editheaders=1 并使用外部编辑器(可以是脚本)。

## Prepare a temporary script that will serve as an editor.
## This script will be passed to ed.
temp_script=$(mktemp)
cat <<'EOF' >>"$temp_script"
1a
Content-Type: text/html
.
$r test.html
w
q
EOF
## Call mailx, and tell it to invoke the editor script
EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF
~e
.
EOF
rm -f "$temp_script"

Postfix当然可以发送HTML邮件。

相关内容