如何以 HTML 而不是纯文本形式发送电子邮件消息内容?

如何以 HTML 而不是纯文本形式发送电子邮件消息内容?

目前我使用如下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

信息:

  • 最好的方式是创建一个包含和部分的 MIMEContent-Type: multipart/alternative消息。text/plaintext/html

  • 对于懒人来说,Content-Type: text/html(直接在邮件正文中使用 HTML)就可以了。

    ...但请记住无法显示 HTML 的邮件客户端。

  • 无论你选择哪一个,添加charset=utf-8(如Content-Type: text/html; charset=utf-8)到类型标头。(任何非 Unicode 字符集(也许除了us-asciiiso-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"
    

相关内容