mailto複数の本文行をリンクする


120

mailtoリンクで複数行が正しく機能しない

私の場合は、Outlookのデフォルトのメールリーダーでテストしています。

以下はアンカーhrefに配置されます:

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

「ここにメッセージ」のみがメール本文に表示されます。(ChromeとIEのどちらを使用しているか)

考え?

回答:


208

URLエンコーディングを使用して、改行をとしてエンコードできます%0A

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

上記は多くの場合に機能するように見えますが、ユーザーolibre は、mailto URIスキームを管理するRFCが(改行)の代わりに(改行+改行)を使用するように指定ていると指摘しています。参照:改行表現%0D%0A%0A


4
おかげで、これは私にとってうまくいき、インターネット上に浮かんでいる他のソリューションよりもはるかに単純に見えます。
bryn 2013

これはすべての特殊文字で機能するはずですよね?&=%26、%=%25、このパターンが適用されない文字はありますか?
blast_hardcheese 2013年

2
情報について$0Aは、単純ですescape( "\n" )
divillysausages

2
そのエンコーダーは、標準encodeURIComponentを使用してURIコンポーネントをエンコードします。
Cees Timmerman、2014

1
%0D%0Aは私のために電子メールで働き、whatsappメッセージで共有しました
BenB

40
  1. bodymailto文字列内で単一のパラメーターを使用する
  2. %0D%0A改行として使用

mailtoURIスキームがでで指定されているRFC2368(1998年7月)とRFC6068(2010年10月)。
以下は、この最後のRFCのセクション5の抜粋です。

[...]メッセージ本文の改行はでエンコードする必要があります"%0D%0A"
実装"%0D%0A"では、本文に末尾がない場合でも、メッセージの本文に最後の改行を追加できます[...]

セクション6の同じRFCの例も参照してください。

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

上記のmailto本文は以下に対応します:

send current-issue
send index


15

これは私がすることです、追加\nして使用するだけですencodeURIComponent

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

emailBody = encodeURIComponent(emailBody);

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

encodeURIComponentのドキュメントを確認してください


何にinclude使うのencodeURIComponent
frakman1 2017

1
@ frakman1 encodeURIComponentはJavaScript関数です。インクルードなしで使用できます。
kiranvj 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.