2

我正在尝试使用 html 链接填充 mailto 链接的正文。目标浏览器为 IE 7+,邮件客户端为 Outlook 2007+。在我问我的问题之前,我承认 body 参数是用于短文本消息的事实,如下所示:

https://stackoverflow.com/a/4304779/573083

并在此处详细说明:

特殊的“body”表示关联的是消息的正文。“body”字段值旨在包含消息的第一个文本/纯正文部分的内容。“body”伪标头字段主要用于生成用于自动处理的短文本消息(例如邮件列表的“订阅”消息),而不是用于一般 MIME 正文。除了基于 UTF-8 和百分比编码的字符编码之外,“body”字段值没有使用其他编码(例如 base64 或quoted-printable;参见 [RFC2045])。因此,与“mailto”URI 中的消息编码(例如,Content-Transfer-Encoding)相关的标头字段是不相关的,必须被忽略。身体”

话虽如此,在 SO 上有许多线程在正文标签中插入链接取得了不同程度的成功。例如:https ://stackoverflow.com/a/1455881/573083和https://stackoverflow.com/a/9138245/573083

我的问题是类似的,但它专门针对嵌入链接的前景渲染引用参数。我目前有以下几乎可以工作的东西:

<a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=http://someserver.somedomain/somepage.aspx?id=1234%26somekey=%22somevalue%22">A link</a>

部分链接正确显示在 Outlook 正文中,但 Outlook 未在链接中包含最终引用的 url 参数(“somevalue”);="somevalue" 只是显示为纯文本。查看电子邮件消息的来源显示 Outlook 正在关闭封闭<a>标记,因为它将 %22 解释为链接的结尾。我试图用 %2f, /, ' 来逃避 %22 - 无济于事。我相信我需要正确的 Outlook 顺序才能理解 %22 应该包含在链接中,而不是作为封闭链接的关闭。

任何帮助,将不胜感激。

4

2 回答 2

1

从 判断?,您还没有对 body 组件进行编码。

> encodeURIComponent("http://someserver.somedomain/somepage.aspx?id=1234%26somekey=%22somevalue%22") 
"http%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%2526somekey%3D%2522somevalue%2522" 

所以代码应该是:

<a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=http%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%2526somekey%3D%2522somevalue%2522">A link</a>

或者更有可能:

<a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=http%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%26somekey%3D%2522somevalue%2522">A link</a>
于 2013-06-10T13:07:19.473 回答
0

我会将链接放在“<”和“>”中。

%20 = space

%0D = new line

%3C = "<"

%3E = ">"

<html>
<body>hi
 <a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=Hi,%0DThis%20is%20a%20body%0DAlso%20this%20is%20a%20link%20%3Chttp%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%26somekey%3D%22somevalue%22%3E%20have%20fun.">A link</a></body>

</html>

于 2016-02-03T04:04:50.520 回答