如何在kentico的代码端停止结账过程中的“发送订单通知”和“发送付款通知”
我知道kentico管理员设置中有停止发送通知电子邮件的选项。但是我想在我的定制代码中检查这个。那么你能告诉我在肯蒂科哪里可以得到代码吗如何在kentico的代码端停止结账过程中的“发送订单通知”和“发送付款通知”,kentico,Kentico,我知道kentico管理员设置中有停止发送通知电子邮件的选项。但是我想在我的定制代码中检查这个。那么你能告诉我在肯蒂科哪里可以得到代码吗 请向官方咨询 您需要使用SettingSkeyInfo提供程序: SettingsKeyInfoProvider.SetValueCMSSettingName、SiteName、value; 如果要全局设置site name参数,请省略该参数 您要查找的设置名称是CMSStoreSendOrderNotification和CMSStoreSendPayment
请向官方咨询 您需要使用SettingSkeyInfo提供程序: SettingsKeyInfoProvider.SetValueCMSSettingName、SiteName、value; 如果要全局设置site name参数,请省略该参数 您要查找的设置名称是CMSStoreSendOrderNotification和CMSStoreSendPaymentNotification 您可以通过查询数据库找到更多设置: 从[CMS_SettingsKey]中选择*键,其中的键名为“%cmsstoresend%”
如果您希望在发送通知时拦截操作,则可以对EmailInfo对象使用全局事件,如下所示:
[assembly: RegisterModule(typeof(GlobalEventsModule))]
public class GlobalEventsModule : Module
{
public GlobalEventsModule() : base (typeof(GlobalEventsModule).Name)
{
}
protected override void OnInit()
{
base.OnInit();
EmailInfo.TYPEINFO.Events.Insert.Before += Insert_Before;
}
private void Insert_Before(object sender, ObjectEventArgs e)
{
// executed before an e-mail is inserted into DB
var email = (EmailInfo)e.Object;
}
}
要取消代码中的执行,您可以调用cancel方法,尽管在这种情况下可能会出现异常-您必须在场景中自行测试:
private void Insert_Before(object sender, ObjectEventArgs e)
{
var email = (EmailInfo)e.Object;
e.Cancel();
}
仅当您使用强烈建议的电子邮件队列,并且将对所有发出的电子邮件(而不仅仅是通知)执行此操作时,此操作才有效。使用CMS.Ecommerce库,您可以通过API检查这些设置 SiteInfoIdentifier sii=新的SiteInfoIdentifierSiteContext.CurrentSiteID; bool sendOrderNotificationEmail=CMS.Ecommerce.ecommercestettings.SendOrderNotificationsii 如果要以编程方式设置它们,则必须使用SettingSkeyInfo提供程序 SettingsKeyInfoProvider.SetValueCMSStoreSendOrderNotification,false