Вставить разрыв строки в теле mailto

166

Я хотел бы вставить разрыв строки в мое тело письма. Я пробовал% 0A,% 0D и% 0D% 0A. У меня ничего не получалось. Я тестировал на Gmail, Yahoo, Apple Mail, Outlook 2010, Outlook.com и Thunderbird с Google Chrome на Mac OSX.

Любая помощь, пожалуйста?

Вот мой код:

<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0A%20Firstname%20%3A"><img alt="Subscribe" class="center" height="50" src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" width="137"></a>
Марион
источник
4
возможный дубликат: stackoverflow.com/questions/15019689/…
Джон
@ Джон Как это дубликат? Это очень специфический вопрос об %20использовании для ввода новой строки, а не о том, как создать новую строку, как этот вопрос.
jdmdevdotnet
1
Выглядит как дурак для меня. Этот вопрос спрашивает: «Как мне вставить разрыв строки, как я делаю пробел». Это не спрашивает, как использовать %20 в качестве новой строки. Единственное существенное различие, которое я вижу, заключается в том, что это вопрос о теле, тогда как этот вопрос - о предмете. Это один и тот же ответ в любом случае, хотя.
Эми

Ответы:

242

Я бы посоветовал вам попробовать html-тег <br>, если ваше маркетинговое приложение его распознает.

Я использую %0D%0A. Это должно работать, пока электронная почта отформатирована в формате HTML.

<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0AFirstname%20%3A"><img alt="Subscribe" class="center" height="50" src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" width="137"></a>

Вы, вероятно, захотите убрать% 20 ​​перед именем, иначе у вас будет пробел в качестве первого символа на следующей строке.

Примечание: когда я проверял это с вашим кодом, он работал (вместе с дополнительным интервалом). Вы используете почтовый клиент, который не поддерживает форматирование HTML?

Джем
источник
1
Я уже пытался %0D%0A, и это не работает для меня. Я использую почтовое маркетинговое решение для отправки своей новостной рассылки. Я предполагаю, что это переписывает мой код
Марион
1
О, если вы используете отдельное решение, пробовали ли вы HTML-тег "<br>"? Иногда это работает, когда я использую сторонние приложения.
Джем
2
Я провел некоторый тест с другой платформой, мой код работает отлично! это определенно исходит от решения, которое я использую. Все эти часы потеряны ни за что ... извините, ребята, и еще раз спасибо за вашу помощь
Марион
4
если вы хотите , чтобы преобразовать каждый <br>, <br/>или <br />на что %0D%0Aвы можете сделатьvar emailBody = htmlBody.replace(/<br\s*\/?>/mg,"%0D%0A");
Жоау Пиментел Ferreira
118

В соответствии с RFC2368, который определяет mailto:, дополнительно подкрепленный примером в RFC1738 , прямо указано, что единственный действительный способ генерировать разрыв строки - с %0D%0A.

Это также относится ко всем схемам URL, таким как gopher, smtp, sdp, imap, ldap и т. Д.

davidcondrey
источник
7
Обратите внимание, что если вы создаете ссылку mailto, используя JavaScript, то вы можете использовать, escape('\r\n')чтобы получить %0D%0A.
Марк Родс
6
Дополнительное примечание: если вы создаете ссылку с помощью шаблонов строк ES6 / ES2015, необработанный код ( %0D%0A) работает просто отлично.
Адам Симпсон
@MarkRhodes: Так как mailto - это URI, вы также можете использовать encodeURI (myMailToURIString), который затем экранирует все символы, необходимые в вашем почтовом теле :-)
Lars Juel Jensen
4

Любопытно, что в Gmail для Android %0D%0Aне работает и <br>работает:

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=First line<br>Second line">
   click here to mail me
</a>
peprumo
источник
-1

Для обычной электронной почты с использованием JavaScript вы также можете использовать \rс encodeURIComponent().

Например, это сообщение:

hello\rthis answer is now well formated\rand it contains good knowleadge\rthat is why I am up voting

Кодированный URI, приводит к:

hello%0Dthis%20answer%20is%20now%20well%20formated%0Dand%20it%20contains%20good%20knowleadge%0Dthat%20is%20why%20I%20am%20up%20voting

И, используя href:

mailto:me@house.country?body=hello%0Dthis%20answer%20is%20now%20well%20formated%0Dand%20it%20contains%20good%20knowleadge%0Dthat%20is%20why%20I%20am%20up%20voting

Результатом будет следующий текст письма:

hello
this answer is now well formated
and it contains good knowleadge
that is why I am up voting
Дебанга Дурлов Сайкия
источник
1
@littlecoder Потому что это плохой ответ: плохо отформатирован, плохо сформулирован и не содержит существенного контекста. Вероятность того, что люди, попавшие на эту страницу, будут смущать, так же велика, как и помощь им. Это не полезно по стандартам этого сайта, и поэтому за него проголосовали соответственно
UnrealEagle