Sitecore ECM - 不发送重复的电子邮件地址

时间:2012-11-25 20:45:52

标签: sitecore sitecore6 sitecore-ecm

有没有人知道Sitecore ECM中是否有设置会禁止发送到重复的电子邮件地址(Sitecore 6.5 rev 706 ECM 1.3.2 rev 120424)。我没有在开发文档中找到任何提及 - 但它似乎是一个常见的要求。或者我是否需要覆盖发送管道并将其实现为自定义功能?

干杯

1 个答案:

答案 0 :(得分:2)

您可以将自己的步骤添加到DispatchNewsletter管道,而不是覆盖发送管道。

在该管道中,您可以访问所有收件人,并可以过滤它们。

以下是一些应该有效的代码,但我还没有测试过它

public void Process(DispatchNewsletterArgs args)
{
    // Lets not filter emails from engagement automation
    TargetAudienceBase targetAudience = args.Message.TargetAudience;

    if (targetAudience.Name != "Engagement Automation")
    {
        // Cleas who gets the email
        args.Message.SubscribersNames.Clear();


        // holds list of email address, and contancts.
        var emailSendingTo = new Dictionary<string, Contact>();


        // Filter all recipients from the targetAudience
        foreach (Contact contact in targetAudience.OptInList.Contacts.Except(targetAudience.OptOutList.Contacts))
        {
            if (!emailSendingTo.ContainsKey(contact.InnerUser.Profile.Email))
            {
                emailSendingTo.Add(contact.InnerUser.Profile.Email, contact);
            }
        }

        // Add all the names to the subscriber list (domain/username)
        foreach (KeyValuePair<string, Contact> keyValuePair in emailSendingTo)
        {
            args.Message.SubscribersNames.Add(keyValuePair.Value.Name);
        }

    }
}

在DeployAnalytics中插入该步骤,使分析工作正常;