Мне не приходилось много возиться со ссылками mailto. Однако теперь мне нужно добавить ссылку в тело письма, если это возможно.
Есть ли способ добавить ссылку или изменить открытое электронное письмо на HTML-письмо вместо текстового?
Что-то типа:
<a href = "mailto:[email protected]?body=The message's first paragraph.%0A%0aSecond paragraph.%0A%0AThird Paragraph.%0A%0ALink goes here">Link text goes here</a>






Насколько я могу судить, это невозможно, поскольку для ссылки нужен HTML, а ссылки mailto не создают электронное письмо в формате HTML.
Вероятно, это сделано для безопасности, так как вы можете добавить к этой ссылке javascript или iframe, и почтовый клиент может открыть конечному пользователю уязвимости.
Раздел 2 RFC 2368 говорит, что поле body должно быть в формате text/plain, поэтому вы не можете использовать HTML.
Однако даже если вы используете простой текст, возможно, что некоторые современные почтовые клиенты все равно будут отображать URL-адрес как интерактивную ссылку.
Safari в iOS отображает такие теги, как <b>, <i> и <img>. Не уверен насчет <a>.
Я могу подтвердить, что Thunderbird в Windows отображает URL-адрес как ссылку (на приемник), поэтому нет необходимости добавлять какие-либо теги <a>.
Добавьте полную ссылку:
"http://"
в начало строки, и большинство достойных почтовых клиентов автоматически связывают его либо перед отправкой, либо на другом конце при получении.
Для действительно длинных URL-адресов, которые, вероятно, будут переноситься из-за всех параметров, заключите ссылку в символ меньше / больше чем. Это сообщает почтовому клиенту нет обернуть URL-адрес.
например
<http://www.example.com/foo.php?this=a&really=long&url=with&lots=and&lots=and&lots=of&prameters=on_it>
Работает с приложением Почта на MacOS и iOS, с GMail в Chrome на MacOS и с приложением Почта на iOS.
Пожалуйста, проверьте ниже 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 = "[email protected]";
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>
Я только что попробовал ваш пример и получаю сообщение об ошибке: «ReferenceError: ActiveXObject не определен»
Я обнаружил, что ActiveXObject поддерживается только в Internet Explorer, но не в приложениях в стиле Metro. Спасибо, в любом случае.
Это решение работает только в мире антиутопии будущего, где Microsoft управляет всем, а Internet Exploiter по-прежнему делает жизнь веб-разработчиков невыносимой.
Вот что я собрал. Он работает на выбранном мобильном устройстве, для которого он мне нужен, но я не уверен, насколько универсально это решение.
<a href = "mailto:[email protected]?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">
Я пробовал твой пример ... не работает ....
У меня есть реализация, которая работает на устройствах 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>
Спецификация тела mailto гласит:
The body of a message is simply lines of US-ASCII characters. The only two limitations on the body are as follows:
- CR and LF MUST only occur together as CRLF; they MUST NOT appear independently in the body.
- Lines of characters in the body MUST be limited to 998 characters, and SHOULD be limited to 78 characters, excluding the CRLF.
https://tools.ietf.org/html/rfc5322#section-2.3
Как правило, в настоящее время большинство почтовых клиентов умеют автоматически устанавливать ссылки, но не все это делают из соображений безопасности. Скорее всего, вы сможете найти обходные пути, но это не обязательно будет работать повсеместно.
это действительно интересно, спустя 10 лет люди отметили этот вопрос как дубликат другого вопроса, который был задан 3 года спустя :))) Почему? даже ответы на этот вопрос не отличаются, и стандарт
RFC 2368не обновлялся.