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

Sitecore 8.1 EXM无法在收件人列表中添加Sitecore extranet用户,sitecore,sitecore8,ecm,sitecore-exm,Sitecore,Sitecore8,Ecm,Sitecore Exm,我正在尝试将现有sitecore用户添加到收件人列表中。我使用列表管理器创建了空的收件人列表。下面是我的代码 RecipientId recipient = new SitecoreUserName(userProfile.UserName); var listRepository = new ListManagerCollectionRepository(); var newsRecipientList = listRepository.GetEditableReci

我正在尝试将现有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电子邮件体验管理器与列表管理器配合使用。列表管理器使用联系人实体,而不是用户实体。这就是为什么用户可以出现在Sitecore中,但在将其添加到列表时可能会遇到问题:联系人可能缺席。此外,我不确定列表的RecipientId是否可以从SitecoreUserName获得,就像您的示例中一样

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

您可以通过使用解决您的问题。它对我有用

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

这段代码在cM和CD都相同的环境中运行良好。但在扩展环境中抛出异常。无法获取收件人列表。newsRecipientList=listRepository.GetEditableCipientCollection(“{my id}”);你能想到什么原因吗?@MohitDharmadhikari很难说没有例外的细节。是否已将“默认cd群集”配置为IIS服务器名(即计算机名)是的,我已将“默认cd群集”配置为IIS服务器名而不是网站域。这是好的,还是我需要以其他方式配置它日志中的错误是listManager值不能为空。因此,它无法在cd服务器中创建使用factory的列表管理器对象。非常感谢您的帮助,伙计!非常感谢我已获得错误的详细日志,并在新线程中提出了问题。