如何使用命令'mail'从Unix发送带有不同颜色文本的邮件?

时间:2018-06-04 14:25:50

标签: email unix colors

我想从Unix服务器发送消息。我使用命令'mail':

echo "MESSAGE_BODY" | mail -s "MESSAGE_TITLE" somebody@gmail.com

没关系。 之后,我想发送不同颜色的消息。我试过这个命令:

echo "<font color="red">MESSAGE_BODY</font>" | mail -s "MESSAGE_TITLE" somebody@gmail.com

但它没有帮助我。如何使用颜色?

2 个答案:

答案 0 :(得分:1)

已经有一个“单行”发布了正确答案。 我仍然认为发布方式和原因会更好。

您不能直接将HTML代码回传到邮件中的原因是接收方(客户端)不知道如何显示它。因此,它很可能只是回退到清除文本,所有您在查看邮件时都会看到HTML代码。

您需要的是告诉客户您的邮件内容是用HTML撰写的。您可以通过在邮件中添加正确的MIME标头来完成此操作。

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

请注意,您还可以设置字符集信息。

MIME版本是为了更好的兼容性,如果您不遵守RFC,某些SMTP服务器将为您提供更高的垃圾邮件分数:)

但是现在设置了这些标题,所有“BODY”内容都将被视为HTML内容。

我不只是想为您提供“单行”,我认为在脚本中显示更多内容会更容易阅读。

那么

怎么样?
(
echo "From: my@email.tld";
echo "To: some@email.tld";
echo "Subject: Test html mail";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "";
echo "<strong>Testing</strong><br><font color=\"blue\">I'm Blue :)</font>";
) | sendmail -t

从技术上讲,它仍然是一个单行的:)但它看起来更好,你可以看到发生了什么!

奖励信息

如果您想同时拥有HTML和TEXT主体,则需要查看Multipart内容类型主体。我已经包含了一个示例,但如果您对多部分类型了解不多,则需要仔细阅读。

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="--0001boundary text--"

--0001boundary text--
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

The TEXT body goes here

--0001boundary text--
 Content-Type: text/html; charset="utf-8"
 Content-Transfer-Encoding: quoted-printable

<strong>HTML code goes here</strong>
--0001boundary text--

正如您所看到的,它不再是一些简单的邮件正文。 但我想我想告诉你它是如何完成的,万一你想放手一搏。

答案 1 :(得分:0)

echo "<font color="green">Message body</font>" | mail -s "$(echo -e "Message title\nContent-Type: text/html")" somebody@gmail.com