Sitecore 8.1 EXM无法在收件人列表中添加Sitecore外联网用户

时间:2016-06-01 05:09:52

标签: sitecore sitecore8 ecm sitecore-exm

我正在尝试将现有的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);
    }

然而,当我看到我的收件人列表时,它总是空的。请帮助。

1 个答案:

答案 0 :(得分:3)

Sitecore Email Experience Manager与列表管理器配合使用。列表管理器与联系人实体一起使用,而不是用户实体。这就是为什么用户可以出现在Sitecore中的原因,但是将他添加到列表中可能会出现问题:联系人可能缺席。此外,我不确定列表的 RecipientId 是否可以从 SitecoreUserName 获取,就像在您的示例中一样。

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

您可以使用Brian Pedersen approach解决问题。它对我有用。

var repository = new ExtendedContactRepository();
var contact = Repository.GetOrCreateContact(userEmail);
recipientList.AddRecipient(contact.ContactId.ToID());