web-dev-qa-db-ja.com

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

mailtoリンクで複数行を正しく動作させるのに問題がある

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

アンカーhrefには次のものが含まれます。

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

メール本文には「ここのメッセージ」のみが表示されます。 (chromeまたはIEを使用するかどうか)

考え?

114
KevinDeus

RL encoding を使用して、改行を%0Aとしてエンコードできます。

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

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

196
cyang
  1. body文字列内で単一のmailtoパラメーターを使用します
  2. 改行として%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
36
olibre

本文行を取得するには、escape()を使用します

body_line =  escape("\n");

そう

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

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

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

emailBody = encodeURIComponent(emailBody);

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

チェック encodeURIComponent docs

11
kiranvj