3

既存のサイトコア ユーザーを受信者リストに追加しようとしています。リスト マネージャーを使用して空の受信者リストを作成しました。以下は私のコードです。

RecipientId recipient = new SitecoreUserName(userProfile.UserName);
     var listRepository = new ListManagerCollectionRepository();
        var newsRecipientList = listRepository.GetEditableRecipientCollection("{list-id}");
    if (!newsRecipientList.Contains(recipient).Value)
    {
          newsRecipientList.AddRecipient(recipient);
    }

しかし、受信者リストを見ると、常に空です。助けてください。

4

1 に答える 1

3

Sitecore Email Experience Manager は List Manager と連動します。リスト マネージャーは、ユーザーエンティティではなく、連絡先エンティティを操作します。そのため、ユーザーは 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());
于 2016-06-01T06:58:36.927 に答える