Sitecore 8 EXM add a contact to list from listmanager

前端 未结 4 1327
臣服心动
臣服心动 2021-01-19 11:06

I\'m using Sitecore 8 and the new Email Experience Manager module. I have configured a newsletter email message with an empty list from the listmanager as recipients.

4条回答
  •  猫巷女王i
    2021-01-19 11:14

    To create a contact, you can use the sample code below, the contact name is usually the domain name plus the username, e.g. domain\username.

    public static Contact CreateContact([NotNull] string contactName, [NotNull] string contactEmail, [NotNull] string contactLanguage)
    {
      Assert.ArgumentNotNullOrEmpty(contactName, "contactName");
      Assert.ArgumentNotNullOrEmpty(contactEmail, "contactEmail");
      Assert.ArgumentNotNullOrEmpty(contactLanguage, "contactLanguage");
    
      var contactRepository = new ContactRepository();
    
      var contact = contactRepository.LoadContactReadOnly(contactName);
      if (contact != null)
      {
        return contact;
      }
      contact = contactRepository.CreateContact(ID.NewID);
      contact.Identifiers.AuthenticationLevel = AuthenticationLevel.None;
      contact.System.Classification = 0;
      contact.ContactSaveMode = ContactSaveMode.AlwaysSave;
      contact.Identifiers.Identifier = contactName;
      contact.System.OverrideClassification = 0;
      contact.System.Value = 0;
      contact.System.VisitCount = 0;
    
      var contactPreferences = contact.GetFacet("Preferences");
      contactPreferences.Language = contactLanguage;
    
      var contactEmailAddresses = contact.GetFacet("Emails");
      contactEmailAddresses.Entries.Create("test").SmtpAddress = contactEmail;
      contactEmailAddresses.Preferred = "test";
    
      var contactPersonalInfo = contact.GetFacet("Personal");
      contactPersonalInfo.FirstName = contactName;
      contactPersonalInfo.Surname = "recipient";
    
      contactRepository.SaveContact(contact, new ContactSaveOptions(true, null));
    
      return contact;
    }
    

    After creating the contact, use the following sample code to add the contact to a recipient list.

      var repository = new ListManagerCollectionRepository();
      var recipientList = repository.GetEditableRecipientCollection(recipientListId);
      if (recipientList != null)
      {
        var xdbContact = new XdbContactId(contactId);
        if (!recipientList.Contains(xdbContact, true).Value)
        {
          recipientList.AddRecipient(xdbContact);
        }
      }
    

提交回复
热议问题