【问题标题】:EXM subscribe to list C#EXM 订阅列表 C#
【发布时间】:2015-10-27 10:25:01
【问题描述】:

我正在将我的旧 Sitecore (Sitecore 8 EXM add a contact to list from listmanager 没有完全回答我的问题,由于我无法发表评论,我决定开始一个新话题。

我的第一个问题是我的EcmFactory.GetDefaultFactory().Bl.RecipientCollectionRepository.GetEditableRecipientCollection(recipientListId)RecipientCollectionRepository 上给出了一个编译错误,它说它不存在。所以我使用了稍微不同的代码。我现在的代码如下:

        var contactRepository = new ContactRepository();   
        var contactName = this.Email.Text;
        var contact = contactRepository.LoadContactReadOnly(contactName);

        contact = contactRepository.CreateContact(Sitecore.Data.ID.NewID);
        contact.Identifiers.AuthenticationLevel = Sitecore.Analytics.Model.AuthenticationLevel.None;
        contact.System.Classification = 0;
        contact.ContactSaveMode = ContactSaveMode.AlwaysSave;
        contact.Identifiers.Identifier = contactName;
        contact.System.OverrideClassification = 0;
        contact.System.Value = 0;
        contact.System.VisitCount = 0;

        var contactPreferences = contact.GetFacet<IContactPreferences>("Preferences");
        contactPreferences.Language = "nl-NL";

        var contactEmailAddresses = contact.GetFacet<IContactEmailAddresses>("Emails");
        contactEmailAddresses.Entries.Create("test").SmtpAddress = this.Email.Text;
        contactEmailAddresses.Preferred = "test";

        var contactPersonalInfo = contact.GetFacet<IContactPersonalInfo>("Personal");
        contactPersonalInfo.FirstName = contactName;
        contactPersonalInfo.Surname = "recipient";
        if (recipientList != null)
                {
                    var xdbContact = new XdbContactId(contact.ContactId);

                    if (!recipientList.Contains(xdbContact, true).Value)
                    {
                        recipientList.AddRecipient(xdbContact);
                    }

                    contactRepository.SaveContact(contact, new ContactSaveOptions(true, null));
                }

所以找到了recipientList,当我第一次添加联系人时,它会将“收件人”增加到1(使用/sitecore/system/List Manager/All Lists/E-mail Campaign Manager/Custom/RecipientList检查)。

我还有一条包含此选择加入收件人列表的消息,但是当我检查该消息时,它说它将发送给 0 个订阅者。

对此有什么想法吗?

【问题讨论】:

    标签: sitecore sitecore8 sitecore-exm


    【解决方案1】:

    查看这篇文章,列出 Sitecore EXM 中的已知问题: https://kb.sitecore.net/articles/149565

    “收件人列表在收件人订阅列表后显示“0”个收件人总数。(62217)”

    我通过在消息中添加一个简单列表(来自 csv,一个联系人)在沙盒环境中解决了这个问题。这将总收件人计数从 0 增加到 1,从而允许激活消息。复合列表中的所有收件人都收到了一条消息。

    【讨论】:

      【解决方案2】:

      您有分布式环境吗?如果是这样,RecipientCollectionRepository 将无法工作,因为它仅在内容管理服务器上可用。您可以尝试使用 ClientApi:

      ClientApi.UpdateSubscriptions(RecipientId recipientId, string[] listsToSubscribe, string[] listsToUnsubscribe, string managerRootId, bool confirmSubscription)
      

      只需在第一个字符串数组中添加您想要订阅的列表的 ID。

      这个选项只是一个简短的说明,listToUnsubscribe 实际上并没有从列表中删除联系人。您应该通过退出列表的 ID。这基本上将它们排除在任何未来的电子邮件之外。一个缺点是您将无法重新订阅它们。

      如果这对您不起作用,您将需要在您的 CD 服务器和您的 CM 服务器之间创建您自己的 API,其中 CM 服务器使用 recipientCollectionRepository 来订阅和取消订阅

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2015-02-27
        • 1970-01-01
        • 2020-11-28
        • 2018-11-18
        • 2016-05-30
        • 2014-04-24
        相关资源
        最近更新 更多