Mailx 发送 html 消息 [重复]
- 2024-10-17 08:46:00
- admin 原创
- 72
问题描述:
我想用 Mailx 发送 html 消息。当我尝试以下命令时
mailx -s "Subject" user@gmail.com < email.html
我以纯文本形式获取了 email.html 的内容。在消息中,标题 Content-Type 设置为 text/plain。-a 选项尝试发送文件,因此我不知道如何修改标题。这个答案几乎奏效了,它很好地将 Content-Type 设置为 text/html,但并没有替换默认的 Content-Type,即 text/plain。
mailx -s "$(echo -e "This is the subject
Content-Type: text/html")" user@gmail.com < email.html
得出以下结果:
From: send@gmail.com
To: user@gmail.com
Subject: This is the subject
Content-Type: text/html
Message-ID: <538d7b66.Xs0x9HsxnJKUFWuI%maikeul06@gmail.com>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
boundary="=_538d7b66.z5gaIQnlwb1f/AOkuuC+GwF1evCaG/XIHQMbMMxbY6satTjK"
This is a multi-part message in MIME format.
--=_538d7b66.z5gaIQnlwb1f/AOkuuC+GwF1evCaG/XIHQMbMMxbY6satTjK
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
<html>
<body>
<p>Helo wolrd</p>
</body>
</html>
附言:我也尝试使用 uuencode。当我尝试在网络邮件中显示消息时,我看到的是空白页...
解决方案 1:
mailx
如果您的命令支持-a
(附加标题)选项,这很容易:
$ mailx -a 'Content-Type: text/html' -s "my subject" user@gmail.com < email.html
如果没有,请尝试使用sendmail
:
# create a header file
$ cat mailheader
To: user@gmail.com
Subject: my subject
Content-Type: text/html
# send
$ cat mailheader email.html | sendmail -t
解决方案 2:
邮件有很多不同的版本。当你超越邮件 -s subject to1@address1 to2@address2
使用一些 mailx 实现,例如来自 Ubuntu 上的 mailutils 或 Debian 的 bsd-mailx,这很容易,因为有一个选项。
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
使用 Heirloom 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"
使用通用的 POSIX mailx,我不知道如何获取标题。
如果你要使用任何邮件或 mailx,请记住
即使在给定的 Linux 发行版中,这也不具备可移植性。例如,Ubuntu 和 Debian 都为 mail 和 mailx 提供了多种替代方案。
撰写邮件时,mail 和 mailx 将以 ~ 开头的行视为命令。如果将文本通过管道传输到邮件中,则需要安排此文本不包含以 ~ 开头的行。
如果您无论如何都要安装软件,您不妨安装一些比 mail/Mail/mailx 更可预测的东西。例如,mutt。使用 Mutt,您可以使用 -H 选项在输入中提供大多数标头,但不能提供 Content-Type,这需要通过 mutt 选项进行设置。
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
或者您可以直接调用 sendmail。目前有几种版本的 sendmail,但它们都支持 sendmail -t 以最简单的方式发送邮件,从邮件中读取收件人列表。(我认为它们并不都支持 Bcc:。)在大多数系统上,sendmail 不在通常的 $PATH 中,而是在 /usr/sbin 或 /usr/lib 中。
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
解决方案 3:
-a
几年来,我曾在 Arch Linux(该标志用于附件)上成功使用以下内容:
mailx -s "The Subject $(echo -e \\
Content-Type: text/html)" user@gmail.com < email.html
这会将 Content-Type 标头附加到主题标头,在最近的更新之前,它一直运行良好。现在,新行已从主题中过滤掉-s
。据推测,这样做是为了提高安全性。
我现在不再依赖于破解主题行,而是使用 bash 子 shell:
(
echo -e "Content-Type: text/html
"
cat mail.html
) | mail -s "The Subject" -t user@gmail.com
而且由于我们实际上只使用mailx
的主题标志,似乎没有理由不sendmail
按照@dogbane 的建议切换到:
(
echo "To: user@gmail.com"
echo "Subject: The Subject"
echo "Content-Type: text/html"
echo
cat mail.html
) | sendmail -t
使用 bash 子shell 避免创建临时文件。
解决方案 4:
EMAILCC=" -c user1@dominio.cl,user2@dominio.cl"
TURNO_EMAIL="user@dominio.cl"
mailx $EMAILCC -s "$(echo "Status: Control Aplicactivo
Content-Type: text/html")" $TURNO_EMAIL < tmp.tmp
解决方案 5:
好吧,Centos7 中的“-a”邮件和 mailx 是“附加文件”而不是“附加标题”。从这里开始,我在 Centos7 上找到解决方案的最短路径:
stackexchange.com
基本上:
yum install mutt
mutt -e 'set content_type=text/html' -s 'My subject' me@my.com < msg.html
解决方案 6:
如果您使用 AIX,请尝试此操作,这将附加一个文本文件并包含 HTML 正文,如果此操作不起作用,请捕获 /var/spool/mqueue 中的输出
#!/usr/bin/kWh
if (( $# < 1 ))
then
echo "
Syntax: $(basename) MAILTO SUBJECT BODY.html ATTACH.txt "
echo " mailzatt"
exit
fi
export MAILTO=${1-noreply@visweb.co.za}
MAILFROM=$(whoami)
SUBJECT=${2-"mailzatt"}
export BODY=${3-/apps/bin/attch.txt}
export ATTACH=${4-/apps/bin/attch.txt}
export HST=$(hostname)
#export BODY="/wrk/stocksum/report.html"
#export ATTACH="/wrk/stocksum/Report.txt"
#export MAILPART=`uuidgen` ## Generates Unique ID
#export MAILPART_BODY=`uuidgen` ## Generates Unique ID
export MAILPART="==".$(date +%d%S)."===" ## Generates Unique ID
export MAILPART_BODY="==".$(date +%d%Sbody)."===" ## Generates Unique ID
(
echo "To: $MAILTO"
echo "From: mailmate@$HST "
echo "Subject: $SUBJECT"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=\"$MAILPART\""
echo ""
echo "--$MAILPART"
echo "Content-Type: multipart/alternative; boundary=\"$MAILPART_BODY\""
echo ""
echo ""
echo "--$MAILPART_BODY"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $BODY
echo ""
echo "--$MAILPART_BODY--"
echo ""
echo "--$MAILPART"
echo "Content-Type: text/plain"
echo "Content-Disposition: attachment; filename=\"$(basename $ATTACH)\""
echo ""
cat $ATTACH
echo ""
echo "--${MAILPART}--"
) | /usr/sbin/sendmail -t
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件