gpt4 book ai didi

bash - 如何在邮件命令中同时使用 html 和纯文本标题?

转载 作者:行者123 更新时间:2023-12-04 19:42:24 24 4
gpt4 key购买 nike

我需要在 centos 中使用 mail 命令发送邮件。作为 HTML 输入和附件的正文将是一个 .txt 文件。

cat email_temp.html | mail -a "CH_sla_list" -s "$(echo -e "(RackTable Report)\nContent-type: text/html;")" example@xxx.com

如果我执行上述命令,我会收到一封内联邮件(显示附件文件内容)。
cat email_temp.html | mail -a "CH_sla_list" -s "$(echo -e "RackTable Report")" example@xxx.com

如果我执行上述操作,我会收到一封带有附件的邮件,但我的 HTML 输入在邮件中显示为文本。

我的要求是在单个命令中在同一标题中同时使用 HTML 和文本,否则将不胜感激任何解决方法。

笔记:
仅供引用,我正在使用 centos-release-7-0.1406.el7.centos.2.5.x86_64

最佳答案

这正在插入mail 的可能性的界限。 .您的第一个命令基本上利用了一个漏洞,该漏洞允许您通过传入文字换行符后跟要添加的 header 来注入(inject)任意 header - 顺便说一句,这已在 mail 的较新版本中被阻止。无论如何,在许多平台上。

(当然,没有嵌入文字换行符的 echo 完全没有用处;它只是一个异常丑陋的 useless use of echo .)

从理论上讲,如果您知道要创建的 header 结构,您可以通过嵌入的换行技巧将消息的一半作为 header 、正文等的“走私”序列传递;但此时 mail不再真正服务于任何有用的目的,因为无论如何你都在做它的大部分工作。

我的建议是切换到具有适当 MIME 功能的邮件客户端,例如 mutt。这很容易让您从命令行发送多个 MIME 正文部分。

如果你不能这样做,这里有一个简单的粗略的 shell 脚本。

# sendmail might be hidden in either of these
PATH=$PATH:/usr/sbin:/usr/lib

( printf '%\n' \
'To: example@xxx.com' \
'Subject: RackTable Report' \
'Content-type: multipart/mixed; boundary=_fooobar_' \
'Mime-Version: 1.0' \
'' \
'--_fooobar_' \
'Content-type: text/html' \
''
cat email_tmp.html
printf '%\n' \
''
'--_fooobar_' \
'Content/type: text/plain' \
'Content-disposition: attachment; name="CH_sla_list"'
''
cat CH_sla_list
printf '%\n' \
'' \
'--_fooobar_--' )|
sendmail -oi -t

我显然必须对您想要的电子邮件结构做出有根据的猜测。

如果你想修改它,请注意单引号逐字引用所有字符串。如果要扩展变量,则需要双引号,例如 "To: $1"
这有许多简化的假设,并且不能可靠地处理长文本行(过去 900 多个字符)、重音字符或非 ASCII 符号(你会得到 A-z、0-9 和基本标点符号;但没有 curl 引号、打印破折号或空格,或 $ 以外的货币符号)。它是 7 位 ASCII,就像互联网刚兴起时你爷爷的电子邮件一样。

如果您知道自己在做什么,可以放宽其中的一些限制,但如果您的要求很重要,可能会考虑安装第三方实用程序或使用至少具有适当 MIME 库的某种语言编写脚本。有一些相当不错的第三方实用程序,它们或多或少地提供了命令行 mutt 中不错的部分。 , 但没有一个比 mutt 更受欢迎本身;但如果你有例如Python 和“按我的意思做”电子邮件库之一,编写自己的类似自定义实用程序也不难。

关于bash - 如何在邮件命令中同时使用 html 和纯文本标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51732178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com