有没有办法根据ECM 2.1中的条件向某些用户发送邮件。例如,我想只向那些用户个人资料属性为Country ='USA'的用户发送邮件。有没有办法在ECM 2.1中执行此操作?
对于ECM 1.3,我们过去常常使用下面的第三方细分模块
https://marketplace.sitecore.net/en/Modules/Sitecore_EmailCampaign_Segment.aspx
但它不支持ECM 2.1。所以我想知道如何在ECM 2.1中实现它。顺便说一句,我们使用的是Sitecore 7.2
答案 0 :(得分:2)
如果您不介意稍微延长ECM,可以使用DispatchNewsletter
Pipline。
如果您添加如下处理器,您可以动态获取所有用户并将其添加到订阅者列表中。您只需要确保这只会在某些情况下触发,以避免干扰核心产品功能。
public class GetUSASubscribers
{
public void Process(DispatchNewsletterArgs args)
{
if(CanProcessEmail(args))
{
var matches = UserManager.GetUsers().Where(usr => usr.Profile["Country"].Equals("USA")).ToList();
foreach (var username in matches)
{
if (User.Exists(username.Name))
{
var contact = Contact.FromName(username.LocalName);
args.Message.Subscribers.Add(contact);
args.Message.SubscribersNames.Add(contact.Name);
}
}
}
}
}
您可以在Sitecore.EmailCampaign.config
<DispatchNewsletter>
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.DispatchNewsletter.CheckPreconditions, Sitecore.EmailCampaign" />
<processor type="YourClass, YourNamespace" />
........................
</DispatchNewsletter>
为了使其更具动态性,您可以为每个消息项添加规则引擎字段,以确定将哪些用户添加到订户列表中。因此,例如用户简档[“country”]等于'USA'的逻辑可以在规则字段中。
供参考,有关Sitecore中规则设置的更多详细信息。