3

我正在尝试将现有的 sitecore 用户添加到收件人列表中。我使用列表管理器创建了空的收件人列表。下面是我的代码。

RecipientId recipient = new SitecoreUserName(userProfile.UserName);
     var listRepository = new ListManagerCollectionRepository();
        var newsRecipientList = listRepository.GetEditableRecipientCollection("{list-id}");
    if (!newsRecipientList.Contains(recipient).Value)
    {
          newsRecipientList.AddRecipient(recipient);
    }

但是,当我看到我的收件人列表时,它总是空的。请帮忙。

4

1 回答 1

3

Sitecore 电子邮件体验管理器与列表管理器一起使用。列表管理器适用于联系人实体,而不是用户实体。这就是用户可以出现在 Sitecore 中的原因,但您在将他添加到列表时可能会遇到问题:联系人可能不存在。此外,我不确定列表的RecipientId是否可以从SitecoreUserName获取,就像在您的示例中一样。

可能导致此问题的其他问题:Sitecore 不会立即将联系人写入数据库。您可以在内存中有联系人(例如 Tracker.Current.Session.Contact),但只有在会话结束后才能将其添加到数据库并解锁,其他人才能访问它。

您可以使用Brian Pedersen 方法解决您的问题。这个对我有用。

var repository = new ExtendedContactRepository();
var contact = Repository.GetOrCreateContact(userEmail);
recipientList.AddRecipient(contact.ContactId.ToID());
于 2016-06-01T06:58:36.927 回答