从 UNIX 向邮件发送一些文本,这样文本将在邮件正文中以某种颜色显示

lea*_*er1 4 windows email unix

我在 UNIX 的文件中有一些文本。我使用mail命令将该文件发送到我的邮件。我想要的是在邮件正文中以某种颜色显示文本。邮件将从 Windows 中打开。任何帮助将不胜感激。

dav*_*dgo 14

您需要将内容转换为 HTML,并确保电子邮件的标题包含

Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

您将如何执行此操作取决于您的“邮件”命令是什么程序,并且实际上可能是不可能的。您可以修改脚本以将电子邮件注入 sendmail 或类似的东西,而不是像

echo 'Content-Type: text/html; charset=UTF-8
Subject: My Subject

<html>
<b>Email Header</b>
<br /><br />
<font color="red">This text is red</font>
</html>' | sendmail user@domain.name
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个稍微粗糙的实现,除非经过调整,否则更有可能被垃圾邮件过滤器丢弃。

  • @Jasper Outlook 2010 及更高版本使用 Word 的引擎来呈现电子邮件。所以,不,它没有滞后:**它是倒退**!Thunderbird 非常好,支持内联 CSS 和 HTML4.01。对于基于 Web 的服务(Hotmail、GMail、Yahoo ...),您应该使用 HTML4.01 并尽可能少地使用 *inline* CSS。 (3认同)

Hen*_*nes 7

davidgo的好答案的更多背景:

电子邮件标准并非以颜色或字体支持开始。因此,无论您多么努力,都不能保证收件人可以看到任何颜色。

然而,大多数客户端确实对邮件进行了更广泛的解释,如果您发送富文本或作为网页,那么它可能会呈现彩色。或者,如果你真的需要一个特定的标记,你需要将它作为图片发送(有所有缺点,因为无法选择文本或编辑)。

来自类 Unix 平台的基本邮件可以按如下方式发送:

sendmail user_to_mail_to@domain.tld < myfile
Run Code Online (Sandbox Code Playgroud)

或者,如果您喜欢 cat 或从管道开始:

cat myfile | sendmail user_to_mail_to@domain.tld
Run Code Online (Sandbox Code Playgroud)

或者,从通过 shell 回显:

echo 'content here' | sendmail user_to_mail_to@domain.tld
Run Code Online (Sandbox Code Playgroud)

所有这些都将发送 myfile 的内容,没有主题,没有颜色,没有文本标记。只是一个普通的简单邮件。这是开始了解基础知识的好方法。


现在对于 David 的回答,它添加了一行,告诉邮件客户端将文本视为 HTML ('Content-Type: text/html)。大多数邮件客户端会很高兴地认识到这一点。有些(例如我仍然用来阅读可疑电子邮件的 elm)不会。

它还添加了一个非常用户友好的主题。

最后它使用 HTML 标记(以<HTML>和开始</HTML>,粗体标记和字体设置来设置颜色。在这种情况下为红色,但您可以使用“color =“FF0000”格式(在这种情况下为 RGB)指定任何颜色最大化红色,没有绿色,没有蓝色)。

如果您需要更复杂的可变邮件,那么 shell 脚本可以将部分附加到文件中,您可以使用第一种方法 (sendmail user < input) 发送最终文件。


邮件将从 Windows 中打开。

邮件客户端在这里很重要。我希望雷鸟在 Windows 上以及在 linux 或 BSD 上都能很好地呈现它。类似的,我希望 mutt 会失败,无论是在 Windows 上还是在 BSD 上。使用文本替代设计多部分邮件可能是一个好主意。为此,请参阅RFC1341