如何在mailto的正文中传递URL

16

我需要在电子邮件正文中发送我的网站链接,以便邮件接收者可以点击参加我的网站。

但是当前的邮件客户端会呈现如下内容:

链接在此处http://www.example.com/foo.php?this=a

URL在&符号处被截断,因此整个加入过程失败了。我如何在mailto正文中传递像http://www.example.com/foo.php?this=a&join=abc&user454这样的URL?

我的当前HTML代码如下:

<a href="mailto:test@test.test?body=Link goes here http://www.example.com/foo.php?this=a&amp;really=long&amp;url=with&amp;lots=and&amp;lots=and&amp;lots=of&prameters=on_it
">Link text goes here</a>
4个回答

28

你需要对URL进行编码。这个URL解码器/编码器工具可以解决问题。以下代码似乎有效

<a href="mailto:test@test.test?body=Link goes here http%3A%2F%2Fwww.example.com%2Ffoo.php%3Fthis%3Da%26join%3Dabc%26user454
">Link text goes here</a>

它将解决与URL相关的任何问题,因此我将其标记为正确答案。 - Simer Twilio Toronto developer

11

我会对你使用的链接进行URL编码,这样它就是:

<a href="mailto:test@test.test?body=Link%20goes%20here%20http%3A%2F%2Fwww.example.com%2Ffoo.php%3Fthis%3Da%26join%3Dabc%26user454">Link text goes here</a>

我刚试了一下,它可以工作!只是使用了他给的第一个链接,而不是第二个。 - tekknolagi

5
您可以在浏览器的地址栏中输入javascript:alert(escape("YOUR URL"));并获取安全的mailto链接URL。例如,在浏览器的地址栏中输入以下内容,然后按Enter键。

javascript:alert(escape("http://www.example.com/foo.php?this=a"));

您将获得一个显示如下的消息框。

http%3A//www.example.com/foo.php%3Fthis%3Da

Opera和基于Mozilla的浏览器允许您从警告框中复制显示的内容。

您可以通过键入

javascript:alert("mailto:MyEmailAddress@Example.com?subject=My Subject&body="+escape("http://www.example.com/foo.php?this=a"));

来改进它,以便在链接中包含主题和正文。其他改进可以使用发件人姓名和换行符%0a。

javascript:alert("mailto:Just Me <CMyEmailAddress@Example.com>?subject=My Subject&body=This is the link:%250a"+escape("http://www.example.com/foo.php?this=a"));

谢谢你提供转义函数!这正是我一直在寻找的。 - yngrdyn

2

我看到您正在使用PHP,那么您可以使用“urlencode ()”函数

<a href="mailto:test@test.test?body=Link goes here <?php echo urlencode('http://www.example.com/foo.php?this=a&amp;really=long&amp;url=with&amp;lots=and&amp;lots=and&amp;lots=of&prameters=on_it
');?>">Link text goes here</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接