【问题标题】:Add recipients to existing recipient list with C# code - Sitecore Email campaign manager使用 C# 代码将收件人添加到现有收件人列表 - Sitecore 电子邮件活动管理器
【发布时间】:2015-07-06 12:18:35
【问题描述】:

我想使用代码将新收件人添加到现有收件人列表中。我尝试使用下面的代码,但它没有工作。

TargetAudience recipientList = Factory.GetTargetAudience("RecipientListId");
if ((recipientList != null))
{
       Contact contact = //I dont know how to create object for this, because it is protected class
       contact.Profile.Email = "my Email";
       contact.Profile.Name = "My Name";
       contact.Profile.FullName = "Full Name";
       recipientList.Subscribers.Add(contact);
 }

请帮助我实现这一目标,

提前致谢

【问题讨论】:

    标签: sitecore sitecore-ecm


    【解决方案1】:

    您可以从用户的用户名中获取联系人。 此方法通过电子邮件地址获取联系人,并包含从电子邮件地址获取用户名的代码。

     public Contact GetContact(string email)
     {
            // managerRoot is the top level ECM item
            ManagerRoot managerRootFromId = Factory.GetManagerRootFromID(managerRoot.ID.ToString());
            var username = Util.AddressToUserName(email);
            string commonDomain = managerRootFromId.Settings.CommonDomain;
            string fullName = commonDomain + "\\" + Util.AddressToUserName(username);
    
            if (User.Exists(fullName))
            {
                return Contact.FromName(fullName);
            }
            return null;
        }
    

    然后您应该能够将联系人添加到订阅列表中。

    或者,一旦您拥有联系人,您就可以设置配置文件值并使用订阅方法。

    contact.InnerUser.Profile["Fullname"] = string.Format("{0} {1}",person.Firstname,person.Surname);
    contact.Subscribe(subscriptionLists);
    

    您还可以使用以下提供电子邮件地址作为本地名称的代码来添加 ECM 用户。

     protected static Contact CreateAnonymousECMUser(string localName, ManagerRoot root)
     {
            Contact contact = (Contact)null;
            if (root != null && !string.IsNullOrEmpty(localName))
            {
                string commonDomain = root.Settings.CommonDomain;
                Assert.IsNotNullOrEmpty(commonDomain, EcmTexts.Localize("The Common Domain setting is not set.", new object[0]));
                string str = commonDomain + "\\" + Util.AddressToUserName(localName);
                while (User.Exists(str))
                    str = str + "_";
                string password = new PasswordGenerator()
                {
                    MinimumCharacters = 14
                }.Generate();
                System.Web.Security.Membership.CreateUser(str, password, localName);
                contact = Contact.FromName(str);
                contact.Profile.ProfileItemId = root.Settings.SubscriberProfile;
                contact.Profile.Save();
            }
            return contact;
      }
    

    【讨论】:

    • 我想在将用户添加到收件人列表之前添加用户吗?你能帮我如何添加用户
    • 添加用户的代码
    • WFFM 中有代码可以创建用户并将他们分配给接收者列表——使用它可能更灵活。
    • WFFM 是什么意思??抱歉,我是 sitecore 的新手
    • 面向营销人员的网络表单 - 这是另一个 Sitecore 模块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多