【问题标题】:Sitecore 8.1 EXM Unable to add Sitecore extranet users in recipient listSitecore 8.1 EXM 无法在收件人列表中添加 Sitecore 外联网用户
【发布时间】:2016-06-01 05:09:51
【问题描述】:

我正在尝试将现有的 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 sitecore8 ecm sitecore-exm


    【解决方案1】:

    Sitecore 电子邮件体验管理器与列表管理器一起使用。列表管理器适用于 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());
    

    【讨论】:

    • 此代码在 cM 和 CD 相同的环境中运行良好。但是在缩放环境中抛出异常。它无法获取收件人列表。 newsRecipientList = listRepository.GetEditableRecipientCollection("{my id }");你能想到什么理由?
    • @MohitDharmadhikari 很难说没有关于异常的细节。你配置了“default-cd-cluster”吗?
    • 是的,我已经将 default-cd 集群配置为 IIS 服务器名称(即机器名称)而不是网站域。可以吗?还是我需要以其他方式配置它
    • 日志中的错误是 listManager 值不能为空。所以有些无法在 cd 服务器中创建使用工厂的列表管理器对象。非常感谢您的帮助队友!非常感谢
    • 我得到了详细的错误日志,并在新线程中提出了问题。 stackoverflow.com/questions/37980807/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多