![从 UNIX 向邮件发送一些文本,使得文本在邮件正文中以某种颜色显示](https://linux22.com/image/1486093/%E4%BB%8E%20UNIX%20%E5%90%91%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%E4%B8%80%E4%BA%9B%E6%96%87%E6%9C%AC%EF%BC%8C%E4%BD%BF%E5%BE%97%E6%96%87%E6%9C%AC%E5%9C%A8%E9%82%AE%E4%BB%B6%E6%AD%A3%E6%96%87%E4%B8%AD%E4%BB%A5%E6%9F%90%E7%A7%8D%E9%A2%9C%E8%89%B2%E6%98%BE%E7%A4%BA.png)
我在 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。