2

mailtoリンクの本文にhtmlリンクを入力しようとしています。ターゲットブラウザはIE7以降で、メールクライアントはOutlook2007以降です。質問をする前に、bodyパラメータがここで呼び出される短いテキストメッセージを対象としているという事実を認めます。

https://stackoverflow.com/a/4304779/573083

ここで詳しく説明します:

特別な「本文」は、関連付けられているのがメッセージの本文であることを示します。「body」フィールド値は、メッセージの最初のテキスト/プレーン本文部分のコンテンツを含むことを目的としています。「body」疑似ヘッダーフィールドは、一般的なMIME本文ではなく、自動処理用の短いテキストメッセージ(メーリングリストの「subscribe」メッセージなど)の生成を主な目的としています。UTF-8とパーセントエンコードに基づく文字のエンコードを除いて、「body」フィールド値に追加のエンコード(base64やquoted-printableなど。[RFC2045]を参照)は使用されません。結果として、「mailto」URIのメッセージエンコーディング(たとえば、Content-Transfer-Encoding)に関連するヘッダーフィールドは無関係であり、無視する必要があります。「体」

そうは言っても、SOには多くのスレッドがあり、bodyタグにリンクを挿入することでさまざまなレベルの成功を収めています。例:https ://stackoverflow.com/a/1455881/573083およびhttps://stackoverflow.com/a/9138245/573083

私の問題は似ていますが、具体的には、埋め込みリンクの引用符で囲まれたパラメーターをレンダリングするOutlookにあります。私は現在、ほとんど機能している次のものを持っています:

<a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=http://someserver.somedomain/somepage.aspx?id=1234%26somekey=%22somevalue%22">A link</a>

部分的なリンクはOutlookの本文に正しく表示されますが、Outlookには最後に引用されたURLパラメーター( "somevalue")がリンクに含まれていません。="somevalue"はプレーンテキストとして表示されています。電子メールメッセージのソースを表示すると、Outlookが<a>%22をリンクの終わりとして解釈しているため、囲んでいるタグを閉じていることがわかります。私は%22を%2f、/、'でエスケープしようとしました-無駄に。%22は、囲んでいるリンクのクロージャーとしてではなく、リンクに含まれるべきであることを理解するために、Outlookの正しいシーケンスが必要だと思います。

どんな助けでもいただければ幸いです。

4

2 に答える 2

1

から判断すると?、ボディ コンポーネントがエンコードされていません。

> encodeURIComponent("http://someserver.somedomain/somepage.aspx?id=1234%26somekey=%22somevalue%22") 
"http%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%2526somekey%3D%2522somevalue%2522" 

したがって、コードは次のようになります。

<a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=http%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%2526somekey%3D%2522somevalue%2522">A link</a>

または、より可能性が高い:

<a href="mailto:someaddress@somedomain.com?subject=This is a subject&body=http%3A%2F%2Fsomeserver.somedomain%2Fsomepage.aspx%3Fid%3D1234%26somekey%3D%2522somevalue%2522">A link</a>
于 2013-06-10T13:07:19.473 に答える