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

Sitecore 8.1 EXM Unable to add Sitecore extranet users in recipient list

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

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

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

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

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

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