Как отправить почту с текстом разных цветов из Unix, используя команду «mail»? - PullRequest
0 голосов

Я хотел бы отправить сообщение с сервера 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 голосов
/ 05 июня 2018

Уже был "однострочник", который разместил правильный ответ.Я все еще чувствую, что лучше публиковать сообщения о том, как и почему.

Причина, по которой вы не можете просто вставить HTML-код прямо в свою почту, заключается в том, что получатель (клиент) не знает, как его отобразить.Таким образом, он, скорее всего, просто вернется к чистому тексту, и все, что вы увидите, это ваш HTML-код при просмотре сообщения.

Что вам нужно, это сообщить клиенту, что содержимое вашего сообщения составлено в HTML.Это можно сделать, добавив в сообщение правильный заголовок MIME.

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

Обратите внимание, что вы также можете установить информацию о кодировке.

Версия MIME предназначена для лучшей совместимости, и некоторые SMTP-серверы будут предоставлятьу вас более высокий балл за спам, если вы не подчиняетесь RFC:)

Но с этими заголовками теперь все содержимое 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 тела, вам нужно изучить тела с несколькими типами контента.Я включил пример, но вам нужно было бы внимательно прочитать об этом, если вы не очень много знаете о многокомпонентных типах.

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--

Как вы можете видеть, это больше не простое почтовое тело.Но я подумал, что хочу показать вам, как это было сделано на тот случай, если вы хотите попробовать.

0 голосов
echo "<font color="green">Message body</font>" | mail -s "$(echo -e "Message title\nContent-Type: text/html")" somebody@gmail.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...