我正在尝试从 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
这需要您自己添加所有重要的标头(From
、To
、Subject
和Content-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邮件。