![如何以 HTML 而不是纯文本形式发送电子邮件消息内容?](https://linux22.com/image/1264750/%E5%A6%82%E4%BD%95%E4%BB%A5%20HTML%20%E8%80%8C%E4%B8%8D%E6%98%AF%E7%BA%AF%E6%96%87%E6%9C%AC%E5%BD%A2%E5%BC%8F%E5%8F%91%E9%80%81%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%B6%88%E6%81%AF%E5%86%85%E5%AE%B9%EF%BC%9F.png)
目前我使用如下Linux命令发送电子邮件:
echo "Here is the link: file:///S:/some_doc.html" | mail -s "Here is some_doc.html" [email protected]
在某些电子邮件客户端中,邮件正文中的“file:///S:/some_doc.html”会变成用户可以点击的链接,但在其他客户端中,它以纯文本形式显示,需要用户将字符串复制并粘贴到 Web 浏览器中。如何修改命令以使邮件成为 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" [email protected]
答案1
我见过这样的做法:
mail -a "Content-type: text/html;" -s Test [email protected] < mail_html.html
我应该提到,我在 Ubuntu Server 10.04_x64 上测试了这一点Gnu 邮件实用程序->后缀
答案2
信息:
最好的方式是创建一个包含和部分的 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
)都是邪恶的。)
正在发送:
Nathaniel 建议
mail -a "Content-Type: text/html"
,但这只适用于 GNU Mailutils。更可靠的方法是通过管道传输消息
sendmail
,但您必须自行构建所有标头。[email protected] 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"