3

В настоящее время я отправляю письмо от команды 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

2 ответа2

5

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

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

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

1

Сообщение:

  • Лучший способ - создать 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"
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .