EXM でのリンク生成とホスト名のマッピング

Current version: 10.1

EXM は Web リクエストを使用してメール メッセージのコンテンツをレンダリングし、メール メッセージ内の内部リンクはすべて、LinkManager クラスを使用してレンダリングされます。

注記

メール メッセージでコンテンツ アイテムへの URL を生成するロジックは、Sitecore が Web サイトのページをレンダリングするときに使用するアプローチと同じです。Sitecore では、多くの設定が内部リンクの生成方法に影響を与えます。たとえば、サイト定義やLinkManager クラスの設定などです。

受信者がメール メッセージ内のリンクをクリックするとき、そのリンクは、公的にアクセス可能なコンテンツ配信サーバーを指す絶対 URL であることが重要です。したがって、ユーザーがメール メッセージを送信するとき、EXM は、メール メッセージ内のリンクを確認して、絶対 URL で生成されていないリンクや、コンテンツ管理サーバーを指していないリンクを修正します。

注記

たとえば、テスト用のメール キャンペーンを送信し、リンクをクリックしたテスト受信者を、まだ公開されていないコンテンツのある Web サイトに誘導したい状況では、マネージャー ルートに個別のプレビュー ホスト名を設定することができます。

EXM は、modifyHyperlink パイプラインで指定されている以下のプロセスに従って、ハイパーリンクの確認と生成を行います。

  • #、javascript:、または mailto: で始まるリンクを無視します。

  • 現在の ServerUrl、たとえば、 https://cms.domain.com を判断します。

  • リンクが絶対でない場合は、前に ServerUrl を付けて、絶対にします。

  • ホスト名を以下のホスト名マッピングと照合し、必要に応じて、EXM はホスト名を置き換えます。たとえば、テスト用の https://preview.domain.com、またはディスパッチ用の https://www.domain.com に置き換えます。

    EXM は、以下の次のホスト名マッピングを使用してホスト名をチェックします。

    • マネージャー ルートは、PreviewUrl から BaseUrl へのマッピングを生成します。

    • コンテンツ ツリーの /sitecore/system/Settings/Email/System/Hostname Mappings に作成されたマッピング。

    • RendererUrl は、メール メッセージのマネージャー ルートの PreviewUrl または BaseUrl にマッピングされます。RendererUrl は、EXM がメール コンテンツのレンダリングに使用するホスト名であり、デフォルトは現在のサーバーのホスト名です。

    注記

    この方法によるホスト名のマッピングは、Sitecore.EmailExperience.Core.config file, in the HostnameMappingService および HostnameMappingRepository クラスで定義されます。この動作をオーバーライドするには、IHostnameMappingService および IHostnameMappingRepository インターフェイスを実装する独自のクラスを作成して、それに応じて設定にパッチを当てることができます。

  • 追加の queryString パラメーターをリンクに追加して、メッセージ、xDB コンタクト、使用されたメール アドレス、ターゲット言語、および A/B テスト バリアントを識別しやすくします。

  • ディスパッチの場合のみ: リンクを、デフォルトでは RedirectUrlPage.aspx であるリック トラッカーに置き換えて、元の URL をクエリ文字列パラメーターとして追加します。

  • ディスパッチの場合のみ: queryString を暗号化します。

カスタム ホスト名マッピングの追加

modifyHyperlink パイプラインで指定されているホスト名マッピングのデフォルトの動作で、リンク内に正しくないホスト名が生成される場合、たとえば、リンクが受信者をコンテンツ管理サーバー、間違ったサイト、または間違った言語に誘導する場合は、カスタム ホスト名マッピングを追加できます。

たとえば、組織に次の 2 つのサイトがあるとします。

  • Site1

    • コンテンツ管理: https://cms.site1.com

    • コンテンツ配信: https://www.site1.com

  • Site2

    • コンテンツ管理: https://cms.site2.com

    • コンテンツ配信: https://www.site2.com

この例では、ベース URL https://www.site1.com を使用して、マネージャー ルートにメール キャンペーンを作成します。メール メッセージに、Site1 と Site2 の両方のリンクを追加します。

デフォルトでは、Site2 の下の Web ページの場合、コンテンツ管理サーバーは https://cms2.site2.com を指すリンクを生成しますが、EXM はコンテンツ配信サーバー上の同じページの正しいアドレスを特定できません。この問題を解決するには、コンテンツ エディターで、コンテンツ管理サーバーのホスト名を該当するコンテンツ配信サーバーにマッピングするホスト名マッピング アイテムを作成します。

ホスト名マッピング アイテムを作成するには:

  • /sitecore/system/Settings/Email/System/Hostname Mappings フォルダーの下に新しいアイテムを作成します。Hostname Mapping テンプレート(/sitecore/templates/Email Campaign/Global Settings/Hostname Mapping) を使用します。

    • [Original] フィールドに、元のコンテンツ管理サーバーのホスト名を入力します (例: https://cms.site2.com/)。

    • [Preview] フィールドに、プレビュー Web サイトの該当するホスト名を入力します。これはオプションです。

    • [Public] フィールドに、コンテンツ配信サーバーの該当するホスト名を入力します (例: https://www.site2.com/)。

Do you have some feedback for us?

If you have suggestions for improving this article,