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

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

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

答案1

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

Content-Type: text/html; charset=UTF-8

如何执行此操作取决于您的“邮件”命令是什么程序,实际上可能不可行。您可以修改脚本以将电子邮件注入 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 [email protected]

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

答案2

有关 davidgo 的好答案的更多背景信息:

电子邮件标准一开始并不支持颜色或字体。因此,无论你如何努力,都无法保证收件人能够看到任何颜色。

但是大多数客户端对邮件的解释会更宽泛一些,如果您发送富文本或网页,则可能会以彩色显示。或者,如果您确实需要特定标记,则需要将其作为图片发送(具有所有缺点,例如无法选择文本或编辑)。

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

sendmail [email protected] < myfile

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

cat myfile | sendmail [email protected]

或者,通过 shell 回显:

echo 'content here' | sendmail [email protected]

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


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

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

最后,它使用 HTML 标记(以 和 开头<HTML></HTML>粗体标签和字体设置来设置颜色。在本例中为红色,但您可以使用“color="FF0000" 格式指定任何颜色(以 RGB 为单位,在本例中为最大红色,没有绿色,没有蓝色)。

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


该邮件将从 Windows 打开。

邮件客户端在这里很重要。我希望 thunderbird 能够在 Windows 以及 Linux 或 BSD 上很好地呈现这一点。同样,我预计 mutt 会在 Windows 和 BSD 上失败。设计带有文本替代的多部分邮件可能是一个好主意。有关此内容,请参阅RFC1341

相关内容