Как передать URL в теле mailto - PullRequest
14 голосов
/ 17 января 2011

Мне нужно отправить URL моего сайта в теле, чтобы получатель почты мог щелкнуть по нему, чтобы присоединиться к моему сайту.

Однако в настоящее время почтовый клиент обрабатывает почту следующим образом:

Ссылка идет здесь http://www.example.com/foo.php?this=a

URL-адрес усекается по символу &, поэтому весь процесс присоединения завершился неудачно. Как я могу передать URL как http://www.example.com/foo.php?this=a&join=abc&user454 в теле письма?

Мой текущий 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 ]

23 голосов
/ 17 января 2011

Вам необходимо закодировать URL.Этот инструмент URL Decoder / Encoder сделает свое дело.Кажется, что работает :

<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>
10 голосов
/ 17 января 2011

Я бы 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>
3 голосов
/ 17 января 2011

Вы можете ввести javascript: alert (escape («ВАШ URL»)); в адресной строке браузера и получите URL, безопасный для ссылки mailto. Например, введите следующее в адресной строке браузера и нажмите 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"));

, чтобы вы включили тему и текст в ссылку. Другие улучшения могут заключаться в использовании имени From и разрывов строк с использованием% 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"));
1 голос
/ 08 января 2013

как я вижу, вы используете 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>
...