我正在尝试对Sitecore ECM发送电子邮件的顺序进行排序 - 我已经在sendEmails处理器之前向DispatchNewsletters管道添加了一个自定义处理器。但我似乎无法改变发送电子邮件的顺序。我想要做的一个基本的例子:
public void Process(DispatchNewsletterArgs args)
{
IOrderedEnumerable<Contact> orderedSubscribers = args.Message.Subscribers.OrderBy(x => x.Profile.UserName.Split('_')[1]);
List<Contact> orderedList = orderedSubscribers.ToList();
args.Message.Subscribers.Clear();
//Add the sorted subscriber list.
args.Message.Subscribers.AddRange(orderedList);
}
}
似乎发送输出是从联系人或成员列表而不是订户列表设置的。但我无法改变秩序。任何人都可以对此有所了解吗?
答案 0 :(得分:1)
排队电子邮件的顺序基于 args.Message.SubscribersNames 属性(不在 args.Message.Subscribers 上)。
您还需要记住,电子邮件被安排为异步任务,因此您无法确定它们是否按照排队的顺序进行处理。
您可以查看 Sitecore.Modules.EmailCampaign.Core.Pipelines.DispatchNewsletter.SendMessage 类的代码,详细了解如何处理电子邮件。