如何防止Sitecore EXM简报将链接转换为RedirectUrlPage.aspx

时间:2017-06-29 20:04:46

标签: c# asp.net sitecore8

我希望阻止Sitecore EXM发送的电子邮件中的某些链接转换为" ... / sitecore / RedirectUrlPage.aspx ..."。具体来说,我不希望我们的图片src网址(例如" https://www.towerswatson.com/assets/image/mailings/wtw_footer_linkedin_blk.jpg")转换为任何其他网址,从而阻止图片显示在电子邮件中。

在查看https://community.sitecore.net/developers/f/10/t/5173#pi214filter=all&pi214scroll=false之后,我基本上意识到我的Sitecore.EmailExperience.Core.config中的以下设置是控制将EXM电子邮件转换为“... / sitecore / RedirectUrlPage.aspx ...”的网址:< / p>

<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.GenerateHyperlink, Sitecore.EmailCampaign" >
    <RedirectPagePath>/sitecore/RedirectUrlPage.aspx</RedirectPagePath>
    <UrlQueryKey ref="settings/setting[@name='QueryStringKey.RedirectUrl']/@value" />
</processor>

我所做的是在我自己的Sitecore.EmailExperience.Core.Custom.config中,我创建了一个替代处理器,它将被调用,因此我可以以某种方式操纵其代码,不将我的图像src URL转换为“... / sitecore / RedirectUrlPage.aspx ...”:

<modifyHyperlink>
    <processor type="TowersWatson.Custom.EXM.GenerateHyperlink, TowersWatson.Custom" singleInstance="true" patch:instead="processor[@type='Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.GenerateHyperlink, Sitecore.EmailCampaign']">
    </processor>
</modifyHyperlink>

这里是我的GenerateHyperlink类中的代码(这正是原始Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.GenerateHyperlink类中的代码,我反编译并且现在想要操作):< / p>

public class GenerateHyperlink : GenerateLinkProcessor
{
    public string RedirectPagePath { get; set; }

    public string UrlQueryKey { get; set; }

    public GenerateHyperlink()
    {
        this.UrlQueryKey = "ec_url";
    }

    public override void Process(GenerateLinkPipelineArgs args)
    {
        Assert.IsNotNull((object)args, "Arguments can't be null");
        Assert.IsNotNull((object)args.Url, "Url can't be null");

        if (args.PreviewMode)
            return;

        StringBuilder stringBuilder = new StringBuilder();
        args.QueryString[this.UrlQueryKey] = HttpUtility.HtmlDecode(args.Url);
        stringBuilder.Append(args.MailMessage.ManagerRoot.Settings.BaseURL);
        stringBuilder.Append(this.RedirectPagePath);

        if (args.QueryString.Count > 0)
        {
            string str = NameValueCollectionExtensions.ToQueryString(args.QueryString, true);
            stringBuilder.Append(str);
        }

        args.GeneratedUrl = stringBuilder.ToString();
    }
}

知道我应该如何更改上面的代码以防止它操纵任何图像src URL?我猜测某些情况(if-condition)应该阻止某些行执行,或者某些逻辑执行。我尝试了30件事,但没有任何效果。谢谢!

0 个答案:

没有答案