我希望阻止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件事,但没有任何效果。谢谢!