Можно ли добавить HTML-ссылку в тело ссылки MAILTO [дубликат]
-
05-07-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
- ссылка mailto с HTML-текстом 11 ответов
Мне не приходилось много возиться со ссылками mailto.Однако теперь мне нужно добавить ссылку в текст письма, если это возможно.
Есть ли способ добавить ссылку или изменить открытое электронное письмо на html-письмо вместо текстового электронного письма?
Что - то вроде:
<a href="mailto:test@test.test?body=The message's first paragraph.%0A%0aSecond paragraph.%0A%0AThird Paragraph.%0A%0ALink goes here">Link text goes here</a>
Решение
Раздел 2 из RFC 2368 говорит, что body
поле должно быть в text/plain
формат, так что вы не можете использовать HTML.
Однако, даже если вы используете обычный текст, вполне возможно, что некоторые современные почтовые клиенты все равно будут отображать URL-адрес в виде интерактивной ссылки.
Другие советы
Добавьте полную ссылку, с:
"http://"
в начало строки, и большинство приличных почтовых клиентов автоматически свяжут ее либо перед отправкой, либо на другом конце при получении.
Для действительно длинных URL-адресов, которые, скорее всего, будут обтекаться из-за всех параметров, обертывайте ссылку символом меньше / больше, чем.Это сообщает почтовому клиенту не чтобы обернуть URL-адрес.
например ,
<http://www.example.com/foo.php?this=a&really=long&url=with&lots=and&lots=and&lots=of&prameters=on_it>
Насколько я могу судить, это невозможно, поскольку для ссылки нужен HTML, а ссылки mailto не создают электронное письмо в формате HTML.
Вероятно, это сделано в целях безопасности, поскольку вы могли бы добавить javascript или iframes к этой ссылке, и почтовый клиент мог бы открыть конечному пользователю уязвимости.
Пожалуйста, проверьте ниже javascript в IE.Не знаю, будет ли работать другой современный браузер или нет.
<html>
<head>
<script type="text/javascript">
function OpenOutlookDoc(){
try {
var outlookApp = new ActiveXObject("Outlook.Application");
var nameSpace = outlookApp.getNameSpace("MAPI");
mailFolder = nameSpace.getDefaultFolder(6);
mailItem = mailFolder.Items.add('IPM.Note.FormA');
mailItem.Subject="a subject test";
mailItem.To = "an@email.here";
mailItem.HTMLBody = "<b>bold</b>";
mailItem.display (0);
}
catch(e){
alert(e);
// act on any error that you get
}
}
</script>
</head>
<body>
<a href="javascript:OpenOutlookDoc()">Click</a>
</body>
</html>
Вот что я собрал воедино.Это работает на выбранном мобильном устройстве, для которого мне это было нужно, но я не уверен, насколько универсально это решение
<a href="mailto:me@me.com?subject=Me&body=%3Chtml%20xmlns%3D%22http:%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3E%3C%2Fhead%3E%3Cbody%3EPlease%20%3Ca%20href%3D%22http:%2F%2Fwww.w3.org%22%3Eclick%3C%2Fa%3E%20me%3C%2Fbody%3E%3C%2Fhtml%3E">
Спецификация для тела 'mailto' гласит:
Тело сообщения - это просто строки из символов US-ASCII.The только два ограничения для тела заключаются в следующем:
- CR и LF ДОЛЖНЫ встречаться только вместе как CRLF;они НЕ ДОЛЖНЫ появляться в организме независимо друг от друга.
- Количество строк символов в основной части ДОЛЖНО быть ограничено 998 символами и должно быть ограничено 78 символами, исключая CRLF.
https://tools.ietf.org/html/rfc5322#section-2.3
Как правило, в настоящее время большинство почтовых клиентов хорошо справляются с автоматической связью, но не все это делают из соображений безопасности.Вероятно, вы можете найти какие-то обходные пути, но это не обязательно будет работать повсеместно.
У меня есть следующая реализация, которая работает для устройств iOS, но не удалась на устройствах Android
<a href="mailto:?subject=Your mate might be interested...&body=<div style='padding: 0;'><div style='padding: 0;'><p>I found this on the site I think you might find it interesting. <a href='@(Request.Url.ToString())' >Click here </a></p></div></div>">Share This</a>