Как отправить содержимое сообщения электронной почты в формате HTML, а не в виде обычного текста?

36015
C.W.Holeman II

В настоящее время я отправляю письмо от команды Linux следующим образом:

echo "Here is the link: file:///S:/some_doc.html" | mail -s "Here is some_doc.html" fred@example.com 

В некоторых почтовых клиентах «file: /// S: /some_doc.html» в теле сообщения становится ссылкой, по которой пользователь может щелкнуть, но в других клиентах он представлен в виде простого текста, требующего от пользователя скопировать и вставить строку в веб-браузер. Как мне изменить команду, чтобы сделать сообщение HTML, чтобы почтовый клиент знал, как обрабатывать ссылку?

Это получает ссылку на сообщение, но все равно обрабатывается как текст, а не HTML:

echo "Here is the link to: <a href='file:///S:/some_doc.html'>some_doc.html</a>" | mail -s "Here is some_doc.html" fred@example.com 
3
Почему совершенно правильный вопрос суперпользователя с ** принятым ответом ** следует перенести на другой сайт SE? BinaryMisfit 13 лет назад 0
Это специфический для Linux вопрос, который теперь, когда есть сайт SE для Linux, был бы естественным местом, где кто-то задает этот вопрос. Если бы вопрос касался различия между текстом и HTML в электронной почте, а не о «команде Linux», то это было бы лучше найти здесь. C.W.Holeman II 13 лет назад 0

2 ответа на вопрос

5
Nathaniel Bannister

Я видел это сделано:

mail -a "Content-type: text/html;" -s Test address@example.com < mail_html.html 

Я должен был упомянуть, я проверил это на Ubuntu Server 10.04_x64 с Gnu Mail Utils -> Postfix

У моего `mail` нет -a, вы могли бы подумать о` mutt`, который поддерживает это? Rich Homolka 13 лет назад 2
Лучшим способом было бы создать MIME-сообщение «multipart / alternative» с частями «text / plain» и «text / html», содержащими идентичный текст, вместо простой отправки HTML напрямую. grawity 13 лет назад 0
@Rich: Это есть в `mail` GNU _Mailutils_. У вас, вероятно, более традиционный _BSD mailx_. (Осторожно: `mail` для _Heirloom mailx_ и` mutt` используют `-a` для чего-то совершенно другого - прикрепления файла.) grawity 13 лет назад 1
1
grawity

Сообщение:

  • Самый лучший способ для создания MIME Content-Type: multipart/alternativeсообщения с text/plainи text/htmlчастями.

  • Для ленивых, Content-Type: text/html(с HTML прямо в теле сообщения) подойдет.

    ... но помните, что есть почтовые клиенты, которые не могут отображать HTML.

  • Что бы вы ни выбрали, добавьтеcharset=utf-8 (как в Content-Type: text/html; charset=utf-8) в заголовок типа. (Любая не-Unicode кодировка (кроме, возможно, us-asciiи iso-8859-1) является злом.)

Посылка:

  • Натаниэль предложил mail -a "Content-Type: text/html", но это работает только с GNU Mailutils.

  • Более надежный способ - передать сообщение sendmail, но вам придется создавать все заголовки самостоятельно.

    rcpt=joe@example.com echo -e "From: <$USER>\nTo: <$rcpt>\nDate: $(date "+%a, %d %b %Y %H:%M:%S %z")\nContent-Type: text/html; charset=utf-8\n\n<!DOCTYPE html>\n<p>Here is the link to: <a href=\"file:///S:/some_doc.html\">some_doc.html</a>" | sendmail -i "$rcpt" 

Похожие вопросы