我有这样的变量:
var htmlBody = "<table border = '1' cellspacing='0' align = 'center'><tr><th>Job #</th><th>Task</th><th>Date</th></tr></table>”;
我将用于生成mailto链接:
window.location = "mailto:?subject=Schedule&body=" + htmlBody;
我的问题是,为此可以在我的字符串中编码html吗?所以我在电子邮件正文中没有html标记。
谢谢,
答案 0 :(得分:0)
您需要使用encodeURI https://www.w3schools.com/jsref/jsref_encodeURI.asp
示例:
var encoded=encodeURIComponent("<span>Hello, im <b>html</b></span>.");
结果是
"%3Cspan%3EHello%2C%20im%20%3Cb%3Ehtml%3C%2Fb%3E%3C%2Fspan%3E."
然后用它来构建你的查询字符串。
答案 1 :(得分:0)
你应该使用encodeURIComponent
&amp; replace
用于编码htmlBody
。
encodeURIComponent
函数对以下字符进行编码:, / ? : @ & = + $ #
。编码'
,使用替换
var htmlBody = "<table border = '1' cellspacing='0' align = 'center'><tr><th>Job #</th><th>Task</th><th>Date</th></tr></table>";
var encodedURL = encodeURIComponent("mailto:?subject=Schedule&body=" + htmlBody).replace(/'/g, "%27");
console.log(encodedURL);
&#13;
答案 2 :(得分:0)
那是不可能的。您只能将电子邮件的body
设置为纯文本。
mailto
类型的URL是定义良好的URI架构。它们在RFC 2368中定义。在第2部分中,它表示body
字段必须为text/plain
(虽然,可能值得注意的是,某些邮件客户端可能会扩展mailto URL架构?也就是说,也许Outlook或Gmail会支持它,而其他人则不会。)