mailtoリンクで複数行を正しく動作させるのに問題がある
私の場合、Outlookのデフォルトのメールリーダーでテストしています。
アンカーhrefには次のものが含まれます。
mailto:[email protected]?&subject=test&body=type%20your&body=message%20here
メール本文には「ここのメッセージ」のみが表示されます。 (chromeまたはIEを使用するかどうか)
考え?
RL encoding を使用して、改行を%0A
としてエンコードできます。
mailto:[email protected]?subject=test&body=type%20your%0Amessage%20here
上記は多くの場合に機能するように見えますが、ユーザーolibre 指摘 mailto URIスキームを管理するRFCは、%0D%0A
(改行)の代わりに%0A
(キャリッジリターン+改行)を使用するように指定しています。 改行表現 も参照してください。
body
文字列内で単一のmailto
パラメーターを使用します%0D%0A
を使用しますmailto
URIスキーム は、 RFC2368 (1998年7月)および RFC6068 (2010年10月)で指定されます。
以下は、この最後のRFCの セクション5 の抜粋です。
[...]メッセージ本文の改行は、
"%0D%0A"
でエンコードする必要があります。
実装は、本文に末尾の"%0D%0A"
がない場合でも、メッセージの本文に最後の改行を追加する場合があります[...]
セクション6 の同じRFCの例も参照してください。
<mailto:[email protected]?body=send%20current-issue%0D%0Asend%20index>
上記のmailto
本文は以下に対応します。
send current-issue
send index
本文行を取得するには、escape()を使用します
body_line = escape("\n");
そう
href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
これは私がしていることです、\n
を追加してencodeURIComponent
を使用するだけです
例
var emailBody = "1st line.\n 2nd line \n 3rd line";
emailBody = encodeURIComponent(emailBody);
href = "mailto:[email protected]?body=" + emailBody;
チェック encodeURIComponent docs