Mailx 发送 html 消息 [重复]

2024-10-17 08:46:00
admin
原创
254
摘要:问题描述:我想用 Mailx 发送 html 消息。当我尝试以下命令时mailx -s "Subject" user@gmail.com < email.html 我以纯文本形式获取了 email.html 的内容。在消息中,标题 Content-Typ...

问题描述:

我想用 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
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2379  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1510  
  PLM(产品生命周期管理)系统在企业项目管理中扮演着至关重要的角色,它能够整合产品从概念设计到退役的全流程信息,提升协同效率,降低成本。然而,项目范围蔓延是项目管理过程中常见且棘手的问题,在PLM系统环境下也不例外。范围蔓延可能导致项目进度延迟、成本超支、质量下降等一系列不良后果,严重影响项目的成功交付。因此,如何在P...
plm项目经理是做什么   16  
  PLM(产品生命周期管理)系统在现代企业的产品研发与管理过程中扮演着至关重要的角色。它不仅仅是一个管理产品数据的工具,更能在利益相关者分析以及沟通矩阵设计方面提供强大的支持。通过合理运用PLM系统,企业能够更好地识别、理解和管理与产品相关的各类利益相关者,构建高效的沟通机制,从而提升产品开发的效率与质量,增强企业的市场...
plm是什么   20  
  PLM(产品生命周期管理)项目管理对于企业产品的全生命周期规划、执行与监控至关重要。在项目推进过程中,监控进度偏差是确保项目按时、按质量完成的关键环节。五维健康检查指标体系为有效监控PLM项目进度偏差提供了全面且系统的方法,涵盖了项目的多个关键维度,有助于及时发现问题并采取针对性措施。需求维度:精准把握项目基石需求维度...
plm项目管理软件   18  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用