mailto связать несколько строк тела

120

проблемы с правильной работой нескольких строк в ссылке mailto

В моем случае я тестирую его с помощью программы чтения почты Outlook по умолчанию.

В якорь href помещается следующее:

mailto:email@address.com?&subject=test&body=type%20your&body=message%20here

в теле письма отображается только «сообщение здесь». (использую ли я Chrome или IE)

мысли?

KevinDeus
источник

Ответы:

208

Вы можете использовать кодировку URL для кодирования новой строки как %0A.

mailto:email@address.com?subject=test&body=type%20your%0Amessage%20here

Хотя вышеприведенное, похоже, работает во многих случаях, пользователь olibre указывает, что RFC, регулирующий схему URI mailto, указывает, что %0D%0A(возврат каретки + перевод строки) следует использовать вместо %0A(перевод строки). См. Также: Представления новой строки .

cyang
источник
4
Спасибо, это сработало для меня и кажется намного проще, чем другие решения, распространенные в Интернете.
bryn
Это должно работать для всех специальных символов, верно? & =% 26,% =% 25, ​​есть ли символы, для которых этот шаблон не выполняется?
blast_hardcheese 09
2
для информации, $0Aэто простоescape( "\n" )
divillysausages
2
Этот кодировщик использует стандарт encodeURIComponentдля кодирования компонентов URI.
Cees Timmerman
1
% 0D% 0A Работал для меня по электронной почте и делился сообщениями в WhatsApp
BenB
40
  1. Используйте один bodyпараметр в mailtoстроке
  2. Использовать %0D%0Aкак новую строку

mailtoСхема URI определяется по RFC2368 (июль 1998) и RFC6068 (октябрь 2010).
Ниже приводится выдержка из раздела 5 этого последнего RFC:

[...] разрывы строк в теле сообщения ДОЛЖНЫ быть закодированы "%0D%0A".
Реализации МОГУТ добавлять окончательный разрыв строки в тело сообщения, даже если в теле сообщения нет конца "%0D%0A"[...]

См. Также в разделе 6 пример из того же RFC:

<mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index>

Вышеупомянутое mailtoтело соответствует:

send current-issue
send index
olibre
источник
18

Чтобы получить линии тела, используйте escape ()

body_line =  escape("\n");

так

href = "mailto:me@my.com?body=hello,"+body_line+"I like this.";
lokeshjain2008
источник
1
Я лично предпочитаю это. В основном потому, что это также работает, когда вы пытаетесь добавить%
Дэн Джеймс Палмер
5
encodeURIComponent, скорее. Посмотреть здесь.
Cees Timmerman
15

Это то, что я делаю, просто добавляю \nи используюencodeURIComponent

пример

var emailBody = "1st line.\n 2nd line \n 3rd line";

emailBody = encodeURIComponent(emailBody);

href = "mailto:me@somesite.com?body=" + emailBody;

Проверить документы encodeURIComponent

kiranvj
источник
Для includeчего ты используешь encodeURIComponent?
frakman1 02
1
@ frakman1 encodeURIComponent - это функция JavaScript. Вы можете использовать его без включения.
kiranvj 04