Текст сообщения Mailto не заполняет IE - PullRequest
6 голосов
/ 21 июня 2011

Я использую mailto для предоставления клиентам информации о ценах на товары. Я пытаюсь автоматически заполнить цитату в теле письма, создав ссылку mailto в виде строки и объединив информацию о квоте, в следующем коде:

var quoteinfo = 'quote information here';
var link = '<a href="mailto:email?subject=subject&body=Please enter your contact information 
and message here: %0A%0A%0AQuote:%0A' + quoteinfo + '">email</a>';

Однако при использовании IE при нажатии на ссылку генерируется электронное письмо, но появляется только явно добавленный текст - в переменной quoteinfo ничего не сохраняется. Я убедился, что последняя ссылка содержит всю информацию о цитате - она ​​просто не появляется в электронном письме. Поскольку электронное письмо успешно генерируется с частью его текста, я не считаю, что это проблема переполнения символов (и в любом случае это происходит даже с использованием всего лишь 30 символов в переменной quoteinfo.

Возможно, это проблема конкретного почтового клиента?

Последнее замечание: мне хорошо известно, что существует популярное движение к замене mailto формами - по другим причинам я не могу сделать это здесь, поэтому, пожалуйста, воздержитесь от ответа, посоветовав перейти на форму.

Конкретный пример того, как будут выглядеть мои ссылки, выглядит следующим образом:

mailto:sales@optecinc.com?subject=Submission From Quote Creator &body=Please enter
your contact information and message here: %0A%0A%0AQuote:%0A#17350 - IFW 2-inch -
$829.00%0A

Ответы [ 3 ]

11 голосов
/ 21 июня 2011

Символ хеша (#) имеет особое значение в URL (помните имена якорей? Например, http://example.com # TopOfPage ). Замените его на %23.

См. Справочник по кодировке URL W3

Еще лучше, JavaScript может сделать это за вас с помощью функции encodeURI().

window.onload = function() {
  var eTo = encodeURI("sales@example.com");
  var eSubj = encodeURI("Submission From Quote Creator");
  var eBody = encodeURI("Please enter your contact information and message here: \n\n\nQuote:\n#17350  IFW 2-inch -$829.00\n");

  var email = "mailto:" + eTo + "?subject=" + eSubj + "&body=" + eBody;

  document.getElementById("sales").href = email;
}
<a href="" id="sales">email</a>
2 голосов
/ 21 июня 2011

Где-то вдоль этих линий вы делаете ложный вывод.Начните с устранения динамической генерации ссылок и протестируйте статический фрагмент HTML.Если это тоже не сработает, опубликуйте ссылку точную , которая не работает.Возможно, в вашей цитате есть недопустимые символы, о которых вы не знаете.Возможно, это начинается с апострофа?

Из приведенного выше кода ссылка будет выглядеть примерно так:

<html>
  <body>

    <a href="mailto:someone@somewhere.com?subject=subject&body=Please enter your contact information and message here: %0A%0A%0AQuote:%0ARaaaawr">email</a>

  </body>
</html>

Это прекрасно работает (протестировано IE9, Outlook2007).

0 голосов
/ 21 июня 2011

В дополнение к URL, кодирующему хэш (#) как Фантабул упоминает , я бы проверил, какой клиент они используют. Если это Outlook (как следует из вашего выбора тегов), они могут захотеть запустить «Обнаружение и восстановление» (обычно находится в меню «Справка»).

Запуск "Обнаружение и восстановление" исправил ряд проблем с аналогичными ссылками в нашей интрасети. Обычно проблема связана с повреждением файла / настройки или зависанием какой-либо другой программы в Outlook - например, обновление Windows, возвращающее раздел реестра, измененный Outlook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...