7

コンテンツ管理ソリューション(具体的にはSDL Tridionですが、質問はより一般的です)があり、さまざまな言語のコンテンツを含む複数のサイトが含まれています。それらはすべて、ページが公開されたときに特定の挿入されたコンテンツを含むHTMLフラグメントをレンダリングするために使用されるRazorベースのテンプレートの数を共有します。

CRMもCMSを介して管理され、同じテンプレートが電子メールニュースレターの作成に使用されます。これらのHTMLメールには画像が含まれており、問題の配布リストを管理しているサイトに公開されます。テンプレートシステムは一般的であり、CMSには最終製品の絶対URLの概念がないため、これらの画像にはすべて相対アドレスが埋め込まれています。CMS内のさまざまなWebサイトにメタデータとして絶対URLを適用し、これらのURLをレンダリングされた画像タグにフォーマットするための.Net拡張子を書き込むことができます。ただし、これにより、この作業にかなりのオーバーヘッドが追加されます。

これは、メールのマークアップのセクションにある<base href="..." />タグを使用することで解決できます。<head>これは、少なくともOutlookでは機能するようです。ただし、電子メールクライアントが何をしていて、このタグをサポートしていないかについて、最新の情報を見つけることができませんでした。

では、質問は次のとおりです。電子メールクライアント(特にブラウザベースのクライアント)の間で、<base>タグはどの程度広くサポートされていますか?

4

2 に答える 2

9

残念ながら、ほとんどのWebベースの電子メールクライアント(Hotmail、Gmail)では機能せず、通常、受信者の約30%になります。

動作しない理由:ほとんどのWebベースのクライアントは、電子メールの本文タグ内にあるものをすべて挿入し、を含む他のすべてを取り除きますhead。したがって、送信する場合:

<html>
<head><base ...></head>
<body><p class="youremail">Email</p></body>
</html>

電子メールクライアントはこれを行います:

<html>
<head><Email client head></head>
<body>
  <email client wrapper>
  <email>
    <p class="youremail">Email</p>
  </email>
  <email client wrapper>...
</body>

したがって、ベースタグは削除されます。含まれていなくても、電子メールクライアントのヘッドに含まれていないため、ブラウザによって無視されます。

残念ながら、画像の絶対パスが進むべき道です。私は過去に「プリフライトプロセッサ」を使用して同様の問題を克服しました。これを使用して<base>hrefを取得し、完成したHTMLを返す前にすべての画像に設定できます。

于 2013-02-06T09:57:17.103 に答える
0

Razorを使用しているかどうかはわかりませんが、使用している場合は、かみそりビュー内でこれを行うことができます。

src="@Request.Url.GetLeftPart(UriPartial.Authority)~/images/screenshot.png"
于 2017-01-09T21:50:09.603 に答える