Mailto связывает несколько линий тела
возникает проблема с правильной работой нескольких строк в канале mailto
В моем случае я тестирую его с помощью почтового чтения Outlook по умолчанию.
В якорь href помещается следующее:
mailto:[email protected]?&subject=test&body=type%20your&body=message%20here
только сообщение "здесь" отображается в теле письма. (использую ли я хром или IE)
мысли?
Ответы
Ответ 1
Вы можете использовать кодировку URL для кодирования новой строки как %0A
.
mailto:[email protected]?subject=test&body=type%20your%0Amessage%20here
В то время как вышеописанное работает во многих случаях, пользователь olibre указывает, что RFC, управляющий схемой URI mailto, указывает, что %0D%0A
(возврат каретки + линия ) следует использовать вместо %0A
(line feed). См. Также: Представления новой строки.
Ответ 2
- Используйте один параметр
body
в строке mailto
- Используйте
%0D%0A
как новую строку
Схема mailto
URI указана RFC2368 (июль 1998 г.) и RFC6068 (октябрь 2010 г.).
Ниже приведен фрагмент раздела 5 этого последнего RFC:
[...] разрывы строк в теле сообщения ДОЛЖНЫ быть закодированы с помощью "%0D%0A"
.
Реализации МОГУТ добавить окончательный разрыв строки в тело сообщения даже если в теле нет "%0D%0A"
[...]
См. также в разделе 6 пример из того же RFC:
<mailto:[email protected]?body=send%20current-issue%0D%0Asend%20index>
Вышеупомянутый тело mailto
соответствует:
send current-issue
send index
Ответ 3
Чтобы получить линии тела, используйте escape()
body_line = escape("\n");
так
href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
Ответ 4
Это то, что я делаю, просто добавьте \n
и используйте encodeURIComponent
Пример
var emailBody = "1st line.\n 2nd line \n 3rd line";
emailBody = encodeURIComponent(emailBody);
href = "mailto:[email protected]?body=" + emailBody;