2012-04-27 2 views
96

, столкнувшись с проблемой получения нескольких строк для правильной работы в почтовом сообщенииmailto link несколько линий тела

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

ставится в якорной HREF следующее:

mailto:[email protected]?&subject=test&body=type%20your&body=message%20here

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

мысли?

ответ

169

Вы можете использовать URL encoding, чтобы кодировать новую строку как %0A.

mailto:[email protected]?subject=test&body=type%20your%0Amessage%20here

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

+4

Спасибо, это работает хорошо для меня и, кажется, гораздо проще, чем другие решения, плавающие в Интернете. – bryn

+0

Это должно работать для всех специальных символов, не так ли? & =% 26,% =% 25, ​​есть ли символы, в которых этот шаблон не выполняется? –

+2

для информации, '$ 0A' - это просто' escape ("\ n") ' – divillysausages

15

Чтобы получить линии тела использовать побег()

body_line = escape("\n"); 

так

href = "mailto:[email protected]?body=hello,"+body_line+"I like this."; 
+1

Я предпочитаю это лично. В основном потому, что это также работает, когда вы пытаетесь добавить% –

+3

'encodeURIComponent'. [См. Здесь.] (Http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent) –

8

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

Пример

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

emailBody = encodeURIComponent(emailBody); 

href = "mailto:[email protected]?body=" + emailBody; 
+0

В чем 'include' вы используете для' encodeURIComponent'? – frakman1

+0

@ frakman1 encodeURIComponent - это функция JavaScript. Вы можете использовать его без каких-либо включений. – kiranvj

26
  1. Используйте один body параметр в mailto строке
  2. Использование %0D%0A в качестве новой строки

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

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

Смотрите также в section 6 пример из той же RFC:

<mailto:[email protected]?body=send%20current-issue%0D%0Asend%20index> 

выше mailto тела соответствует:

send current-issue 
send index 
Смежные вопросы